Cuprins:

Calculator Arduino: 6 pași
Calculator Arduino: 6 pași

Video: Calculator Arduino: 6 pași

Video: Calculator Arduino: 6 pași
Video: How to make calculator using arduino #shorts 2024, Noiembrie
Anonim
Calculator Arduino
Calculator Arduino

Programarea este întotdeauna distractivă, iar Arduino este o platformă minunată dacă abia începi cu programarea încorporată. În acest tutorial vom construi propriul nostru calculator cu Arduino. Valorile pot fi trimise printr-o tastatură (tastatură 4 × 4) și rezultatul poate fi vizualizat pe un ecran LCD (16 × 2 Dot-matrix). Acest calculator ar putea efectua operații simple, cum ar fi Adunarea, scăderea, multiplicarea și divizarea cu numere întregi. Dar, odată ce înțelegeți conceptul, puteți implementa chiar și funcții științifice cu funcțiile încorporate ale Arduino. La sfârșitul acestui proiect, veți ști cum să utilizați un LCD 16x2 și o tastatură cu Arduino și, de asemenea, cât de ușor este să programați pentru ei folosind cu ușurință bibliotecile disponibile. De asemenea, veți înțelege cum să vă programați Arduino pentru îndeplinirea unei anumite sarcini.

Pasul 1: Lucruri necesare

Arduino Uno (Orice versiune va funcționa) Afișaj LCD 16 × 2 Tastatură 4 × 4 Baterie 9V Placă de pâine și fire de conectare

Pasul 2: Diagrama circuitului

Diagrama circuitului
Diagrama circuitului

Pasul 3: Programul Arduino Calculator

Programul complet Arduino pentru acest proiect este dat la sfârșitul acestui proiect. Codul este împărțit în mici bucăți semnificative și explicat mai jos. După cum am spus mai devreme, vom interfața un LCD și o tastatură cu Arduino folosind biblioteci. Deci, să le adăugăm mai întâi la IDE-ul nostru Arduino. Biblioteca pentru LCD este deja inclusă în mod implicit în Arduino, deci nu trebuie să ne facem griji. Pentru biblioteca Keypad, faceți clic pe link pentru a o descărca de pe Github. Veți primi un fișier ZIP, apoi adăugați această lib la Arduino by Sketch -> Include Library -> Add. ZIP file și indicați locația către acest fișier descărcat. După ce am terminat, suntem pregătiți pentru programare. Chiar dacă am folosit o bibliotecă pentru utilizarea tastaturii, trebuie să menționăm câteva detalii (prezentate mai jos) despre tastatura Arduino. Variabilele ROWS și COLS vor spune câte rânduri și coloane are tastatura noastră și harta tastelor arată ordinea în care tastele sunt prezente pe tastatură. Tastatura pe care o folosesc în acest proiect arată așa mai jos pentru harta tastelor, de asemenea, reprezintă aceeași. Mai jos am menționat la ce pini este conectată tastatura folosind matricea variabilă rowPins și colPins.const octet ROWS = 4; // Patru rânduriconst octet COLS = 4; // Trei coloane // Definiți tastele Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {' * ',' 0 ',' # ',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Conectați tastatura ROW0, ROW1, ROW2 și ROW3 la acești pini Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Conectați tastatura COL0, COL1 și COL2 la acești pini Arduino. Odată ce am menționat ce tip de tastatură folosim și cum este conectată, putem crea tastatura folosind acele detalii folosind linia de mai jos Tastatură kpd = Tastatură (makeKeymap (taste), rowPins, colPins, ROWS, COLS); // Creați tastatura În mod similar, trebuie să spunem și la ce pini ai Arduino este conectat LCD-ul. Conform schemei noastre de circuite, definițiile ar fi ca mai josconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pinii la care este conectat LCD LCD LiquidCrystal (rs, en, d4, d5, d6, d7); // creăm ecranul LCD În interiorul funcției de configurare, afișăm doar numele proiectului și apoi trecem la bucla while unde se află proiectul principal. Practic, trebuie să verificăm dacă se tastează ceva pe tastatură, dacă este tastat trebuie să recunoaștem ceea ce se tastează și apoi îl convertim într-o variabilă când este apăsat „=” trebuie să calculăm rezultatul și apoi să îl afișăm pe LCD. Aceasta este exact ceea ce se face în interiorul funcției de buclă așa cum se arată mai joskey = kpd.getKey (); // stocarea valorii tastei apăsate într-un șarif (cheie! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Ce se întâmplă în interiorul fiecărei funcții este explicat folosind liniile de comentarii, parcurgeți codul complet de mai jos, lăsați-l cu el pentru a înțelege cum funcționează de fapt. Dacă aveți vreo îndoială cu privire la o anumită linie, nu ezitați să utilizați secțiunea de comentarii sau forumuri.

Pasul 4:

Pasul 5: Funcționarea calculatorului Arduino

Funcționarea calculatorului Arduino
Funcționarea calculatorului Arduino

Faceți conexiunile conform schemei de circuit și încărcați codul de mai jos. Dacă arată eroare, asigurați-vă că ați adăugat biblioteca conform instrucțiunilor date mai sus. De asemenea, puteți încerca simularea pentru a verifica dacă problema este legată de hardware-ul dvs. Dacă totul este făcut așa cum ar trebui să fie, atunci hardware-ul dvs. va arăta cam așa mai jos, cu ecranul LCD care afișează acest calculator Arduino folosind tastatura 4x4 în acțiune Deoarece tastatura utilizată aici nu are marcaje adecvate, am presupus că alfabetele sunt operatori ca enumerate mai jos Caracter pe tastatură Se presupune că este „A” Adunare (+) „B” Scădere (-) „C” Multiplicare (*) „D” Divizie (/) „*” Șterge (C) „#” Egal (=) Puteți folosiți un marker pentru a scrie peste ceea ce reprezintă de fapt fiecare buton. Cu acest lucru, puteți începe direct să utilizați calculatorul. Tastați numărul și va apărea pe a doua linie, apăsați operandul și tastați al doilea număr, în cele din urmă, apăsați tasta „#” pentru a obține rezultatul. De asemenea, puteți încerca să construiți acest calculator Arduino bazat pe ecran tactil.

Pasul 6: Cod

/ * * Programul calculatorului tastatură Arduino * / # include // Fișier antet pentru LCD de la https://www.arduino.cc/en/Reference/LiquidCrystal#include // Fișier antet pentru tastatură de la https://github.com/ Chris - A / Keypadconst byte ROWS = 4; // Patru rânduriconst octet COLS = 4; // Trei coloane // Definiți tastele Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Conectați tastatura ROW0, ROW1, ROW2 și ROW3 la acești pini Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Conectați tastatura COL0, COL1 și COL2 la acești pini Arduino. Tastatura kpd = Tastatură (makeKeymap (taste), rowPins, colPins, ROWS, COLS); // Creați Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pinii la care este conectat LCD LCD LiquidCrystal (rs, en, d4, d5, d6, d7); Num1 lung, Num2, Număr; cheie char, acțiune; boolean result = false; void setup () {lcd.begin (16, 2); // Folosim un ecran LCD 16 * 2 lcd.print („Calculator DIY”); // Afișați un mesaj introductiv lcd.setCursor (0, 1); // setați cursorul la coloana 0, linia 1 lcd.print ("- CircuitDigest"); // Afișați o întârziere a mesajului introductiv (2000); // Așteptați afișarea pentru a afișa informații lcd.clear (); // Apoi curăță-l} void loop () {cheie = kpd.getKey (); // stocarea valorii tastei apăsate într-un șarif (cheie! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Apoi curățați-l dacă (tasta == '*') // Dacă butonul de anulare este apăsat {Serial.println ("Butonul Anulare"); Număr = Num1 = Num2 = 0; result = false;} if (tasta == '1') // Dacă butonul 1 este apăsat {Serial.println ("Butonul 1"); if (Număr == 0) Număr = 1; else Number = (Number * 10) + 1; // Apăsat de două ori} if (tasta == '4') // Dacă butonul 4 este apăsat {Serial.println ("Butonul 4"); if (Număr == 0) Număr = 4; else Number = (Number * 10) + 4; // Apăsat de două ori} if (tasta == '7') // Dacă butonul 7 este apăsat {Serial.println ("Butonul 7"); if (Număr == 0) Număr = 7; else Number = (Număr * 10) + 7; // Apăsat de două ori} if (tasta == '0') {Serial.println ("Butonul 0"); // Butonul 0 este apăsat dacă (Număr == 0) Număr = 0; else Number = (Number * 10) + 0; // Apăsat de două ori} if (tasta == '2') // Butonul 2 este apăsat {Serial.println („Butonul 2”); if (Număr == 0) Număr = 2; else Number = (Număr * 10) + 2; // Apăsat de două ori} if (tasta == '5') {Serial.println ("Butonul 5"); if (Număr == 0) Număr = 5; else Number = (Number * 10) + 5; // Apăsat de două ori} if (tasta == '8') {Serial.println ("Butonul 8"); if (Număr == 0) Număr = 8; else Number = (Number * 10) + 8; // Apăsat de două ori} if (key == '#') {Serial.println ("Button Equal"); Num2 = Număr; rezultat = adevărat; } if (cheie == '3') {Serial.println ("Butonul 3"); if (Număr == 0) Număr = 3; else Number = (Number * 10) + 3; // Apăsat de două ori} if (tasta == '6') {Serial.println ("Butonul 6"); if (Număr == 0) Număr = 6; else Number = (Number * 10) + 6; // Apăsat de două ori} if (tasta == '9') {Serial.println ("Butonul 9"); if (Număr == 0) Număr = 9; else Number = (Number * 10) + 9; // Apăsat de două ori} if (tasta == 'A' || tasta == 'B' || tasta == 'C' || tasta == 'D') // Butoane de detectare pe coloana 4 {Num1 = Număr; Număr = 0; if (cheie == 'A') {Serial.println ("Adăugare"); action = '+';} if (cheie == 'B') {Serial.println ("Subtraction"); action = '-'; } if (cheie == 'C') {Serial.println ("Multiplicare"); action = '*';} if (cheie == 'D') {Serial.println ("Devesion"); action = '/';} întârziere (100); }} void CalculateResult () {if (action == '+') Number = Num1 + Num2; if (action == '-') Number = Num1-Num2; if (action == '*') Number = Num1 * Num2; if (action == '/') Number = Num1 / Num2; } void DisplayResult () {lcd.setCursor (0, 0); // setați cursorul la coloana 0, linia 1 lcd.print (Num1); lcd.print (acțiune); lcd.print (Num2); if (result == true) {lcd.print ("="); lcd.print (Number);} // Afișează rezultatul lcd.setCursor (0, 1); // setați cursorul la coloana 0, linia 1 lcd.print (Număr); // Afișați rezultatul}

Recomandat: