Satura rādītājs:

Arduino kalkulators: 6 soļi
Arduino kalkulators: 6 soļi

Video: Arduino kalkulators: 6 soļi

Video: Arduino kalkulators: 6 soļi
Video: Измерение расстояния с помощью 6-контактного лазерного модуля VL53L0X с Arduino 2024, Oktobris
Anonim
Arduino kalkulators
Arduino kalkulators

Programmēšana vienmēr ir jautra, un Arduino ir brīnišķīga platforma, ja jūs tikko sākat darbu ar iegulto programmēšanu. Šajā apmācībā mēs izveidosim savu kalkulatoru ar Arduino. Vērtības var nosūtīt, izmantojot tastatūru (4 × 4 tastatūra), un rezultātu var apskatīt LCD ekrānā (16 × 2 punktu matrica). Šis kalkulators varētu veikt vienkāršas darbības, piemēram, saskaitīšanu, atņemšanu, reizināšanu un dalīšanu ar veseliem skaitļiem. Bet, kad esat sapratis šo koncepciju, jūs varat īstenot pat zinātniskas funkcijas, izmantojot Arduino iebūvētās funkcijas. Šī projekta beigās jūs zināt, kā lietot 16x2 LCD un tastatūru ar Arduino, kā arī to, cik viegli ir tos ieprogrammēt, izmantojot pieejamās bibliotēkas. Jūs arī sapratīsit, kā programmēt savu Arduino konkrēta uzdevuma veikšanai.

1. darbība. Nepieciešamās lietas

Arduino Uno (derēs jebkura versija) 16 × 2 LCD displejs 4 × 4 tastatūra 9 V akumulators Maizes dēlis un savienojošie vadi

2. darbība: shēmas shēma

Ķēdes diagramma
Ķēdes diagramma

3. darbība: Arduino kalkulatora programma

Visa projekta Arduino programma ir dota šī projekta beigās. Kods ir sadalīts mazos nozīmīgos gabalos un paskaidrots zemāk. Kā minēts iepriekš, mēs ar bibliotēkām sasaistīsim LCD un tastatūru ar Arduino. Tāpēc vispirms pievienosim tos mūsu Arduino IDE. LCD bibliotēka pēc noklusējuma jau ir iekļauta jūsu Arduino, tāpēc mums par to nav jāuztraucas. Lai iegūtu tastatūras bibliotēku, noklikšķiniet uz saites, lai to lejupielādētu no Github. Jūs saņemsiet ZIP failu, pēc tam pievienojiet šo lib Arduino, izmantojot skici -> Iekļaut bibliotēku -> Pievienot. ZIP failu un norādiet atrašanās vietu uz šo lejupielādēto failu. Kad tas ir izdarīts, mēs visi esam gatavi programmēšanai. Lai gan tastatūras izmantošanai esam izmantojuši bibliotēku, mums ir jāpiemin dažas detaļas (parādītas zemāk) par Arduino tastatūru. Mainīgais ROWS un COLS norādīs, cik rindu un kolonnu ir mūsu tastatūrai, un taustiņu karte parāda secību, kādā taustiņi atrodas tastatūrā. Tastatūra, ko es izmantoju šajā projektā, izskatās šādi zemāk, lai taustiņu karte arī būtu tāda pati. Tālāk zemāk mēs esam minējuši, ar kurām tapām tastatūra ir savienota, izmantojot mainīgo masīvu rowPins un colPins.const baits ROWS = 4; // Četru rindu sastāva baits COLS = 4; // Trīs kolonnas // Definējiet Keymapchar atslēgas [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; baitu rowPins [ROWS] = {0, 1, 2, 3}; // Savienojiet tastatūru ROW0, ROW1, ROW2 un ROW3 ar šīm Arduino tapām. Baitu kolonnas [COLS] = {4, 5, 6, 7}; // Pievienojiet tastatūru COL0, COL1 un COL2 šīm Arduino tapām. Kad esam minējuši, kāda veida tastatūru mēs izmantojam un kā tā ir savienota, mēs varam izveidot tastatūru, izmantojot šo informāciju, izmantojot tālāk redzamo rindiņu. Tastatūra kpd = Tastatūra (makeKeymap (taustiņi), rowPins, colPins, ROWS, COLS); // Izveidojiet tastatūru Saskaņā ar mūsu shēmu shēmas definīcijas būtu šādas: int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Tapas, kurām ir pievienots LCDLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Izveidot LCD Iestatīšanas funkcijas ietvaros mēs vienkārši parādām projekta nosaukumu un pēc tam turpinām uz cilpu, kur atrodas galvenais projekts. Būtībā mums ir jāpārbauda, vai uz tastatūras kaut kas tiek ierakstīts, ja tas ir jāievada, tas ir jāatpazīst kas tiek rakstīts un pēc tam pārvērš to par mainīgo, nospiežot “=”, mums ir jāaprēķina rezultāts un pēc tam beidzot jāparāda LCD. Tieši tas tiek darīts cilpas funkcijas iekšienē, kā parādīts zemāk keykey = kpd.getKey (); // nospiesta taustiņa vērtības saglabāšana charif (atslēga! = NO_KEY) DetectButtons (); if (rezultāts == patiess) CalculateResult (); DisplayResult (); Kas notiek katras funkcijas iekšienē, tiek izskaidrots, izmantojot komentāru rindiņas, skatiet visu zemāk esošo kodu, izklaidējieties, lai saprastu, kā tas faktiski darbojas. Ja jums ir šaubas par kādu konkrētu rindu, lūdzu, izmantojiet komentāru sadaļu vai forumus.

4. solis:

5. darbība: Arduino kalkulatora darbība

Arduino kalkulatora darbība
Arduino kalkulatora darbība

Izveidojiet savienojumus saskaņā ar shēmu un augšupielādējiet zemāk esošo kodu. Ja tas parāda kļūdu, pārliecinieties, vai esat pievienojis bibliotēku saskaņā ar iepriekš sniegtajiem norādījumiem. Varat arī izmēģināt simulāciju, lai pārbaudītu, vai problēma ir saistīta ar aparatūru. Ja viss tiek darīts tā, kā paredzēts, jūsu aparatūra izskatīsies šādi: LCD displejā parādīsies šis Arduino kalkulators, darbībā izmantojot 4x4 tastatūru zemāk uzskaitītās rakstzīmes uz tastatūras Tiek uzskatīts, ka ir “A” saskaitījums (+) “B” atņemšana (-) “C” reizināšana (*) “D” nodaļa (/) “*” Skaidrs (C) “#” Vienāds (=) Jūs varat izmantojiet marķieri, lai uzrakstītu, ko katra poga patiesībā attēlo. Kad tas ir izdarīts, varat tieši sākt izmantot kalkulatoru. Ierakstiet numuru un parādīsies otrajā rindā, nospiediet operandu un ierakstiet savu otro numuru, visbeidzot, nospiediet taustiņu “#”, lai iegūtu rezultātu. Varat arī mēģināt izveidot šo uz skārienekrānu balstīto Arduino kalkulatoru.

6. darbība: kods

/ * * Arduino tastatūras kalkulatora programma */#include // Galvenes fails LCD no https://www.arduino.cc/en/Reference/LiquidCrystal#include // Tastatūras galvenes fails no https://github.com/ Chris-A/Keypadconst baits ROWS = 4; // Četru rindu sastāva baits COLS = 4; // Trīs kolonnas // Definējiet Keymapchar atslēgas [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; baitu rowPins [ROWS] = {0, 1, 2, 3}; // Savienojiet tastatūru ROW0, ROW1, ROW2 un ROW3 ar šīm Arduino tapām. Baitu kolonnas [COLS] = {4, 5, 6, 7}; // Pievienojiet šīm Arduino tapām tastatūru COL0, COL1 un COL2. Tastatūra kpd = Tastatūra (makeKeymap (taustiņi), rowPins, colPins, ROWS, COLS); // Tastatūras izveides izveide int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Tapas, kurām ir pievienots LCDLiquidCrystal lcd (rs, en, d4, d5, d6, d7); garš Num1, Num2, Skaitlis; char atslēga, darbība; Būla rezultāts = nepatiess; void setup () {lcd.begin (16, 2); // Mēs izmantojam 16*2 LCD displeju lcd.print ("DIY Calculator"); // Parādīt ievadziņu lcd.setCursor (0, 1); // iestatiet kursoru uz 0 kolonnu, 1. rinda lcd.print ("-CircuitDigest"); // Parādīt ievadziņojuma aizkavi (2000); // Pagaidiet, līdz displejā tiek parādīta informācija lcd.clear (); // Pēc tam notīriet to} void loop () {key = kpd.getKey (); // nospiesta taustiņa vērtības saglabāšana charif (atslēga! = NO_KEY) DetectButtons (); if (rezultāts == patiess) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Pēc tam notīriet to, ja (taustiņš == '*') // Ja tiek nospiesta atcelšanas poga {Serial.println ("Button Cancel"); Skaitlis = Num1 = Num2 = 0; rezultāts = nepatiess;} if (taustiņš == '1') // Ja tiek nospiesta poga 1 {Serial.println ("Poga 1"); ja (Skaitlis == 0) Skaitlis = 1; cits Skaitlis = (Skaitlis*10) + 1; // Nospiež divreiz}, ja (taustiņš == '4') // Ja tiek nospiesta 4. poga {Serial.println ("Poga 4"); ja (Skaitlis == 0) Skaitlis = 4; cits Skaitlis = (Skaitlis*10) + 4; // Nospiež divreiz}, ja (taustiņš == '7') // Ja tiek nospiesta 7. poga {Serial.println ("7. poga"); ja (Skaitlis == 0) Skaitlis = 7; cits Skaitlis = (Skaitlis*10) + 7; // Divreiz nospiests} if (key == '0') {Serial.println ("Poga 0"); // Poga 0 tiek nospiesta, ja (Skaitlis == 0) Skaitlis = 0; cits Skaitlis = (Skaitlis*10) + 0; // Divreiz nospiests}, ja (taustiņš == '2') // Poga 2 ir nospiesta {Serial.println ("Poga 2"); ja (Skaitlis == 0) Skaitlis = 2; cits Skaitlis = (Skaitlis*10) + 2; // Divreiz nospiests} if (key == '5') {Serial.println ("Button 5"); ja (Skaitlis == 0) Skaitlis = 5; cits Skaitlis = (Skaitlis*10) + 5; // Divreiz nospiests} if (key == '8') {Serial.println ("Poga 8"); ja (Skaitlis == 0) Skaitlis = 8; cits Skaitlis = (Skaitlis*10) + 8; // Divreiz nospiests} if (key == '#') {Serial.println ("Button Equal"); Num2 = skaitlis; rezultāts = taisnība; } ja (atslēga == '3') {Serial.println ("Poga 3"); ja (Skaitlis == 0) Skaitlis = 3; cits Skaitlis = (Skaitlis*10) + 3; // Divreiz nospiests} if (key == '6') {Serial.println ("6. poga"); ja (Skaitlis == 0) Skaitlis = 6; cits Skaitlis = (Skaitlis*10) + 6; // Divreiz nospiests} if (taustiņš == '9') {Serial.println ("Poga 9"); ja (Skaitlis == 0) Skaitlis = 9; cits Skaitlis = (Skaitlis*10) + 9; // Divreiz nospiests} if (taustiņš == 'A' || taustiņš == 'B' || taustiņš == 'C' || taustiņš == 'D') // Pogas noteikšana 4. slejā {Num1 = Skaitlis; Skaitlis = 0; ja (atslēga == 'A') {Serial.println ("Papildinājums"); action = '+';} ja (atslēga == 'B') {Serial.println ("Atņemšana"); darbība = '-'; } ja (atslēga == 'C') {Serial.println ("Reizināšana"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} kavēšanās (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; ja (darbība == '-') Skaitlis = Num1-Num2; ja (darbība == '*') Skaitlis = Num1*Num2; ja (darbība == '/') Skaitlis = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // iestatiet kursoru uz 0 kolonnu, 1. rinda lcd.print (Num1); lcd.print (darbība); lcd.print (Num2); ja (rezultāts == patiess) {lcd.print ("="); lcd.print (numurs);} // Parādiet rezultātu lcd.setCursor (0, 1); // iestatiet kursoru uz 0 kolonnu, 1. rinda lcd.print (Number); // Parādīt rezultātu}

Ieteicams: