Sadržaj:

Arduino kalkulator: 6 koraka
Arduino kalkulator: 6 koraka

Video: Arduino kalkulator: 6 koraka

Video: Arduino kalkulator: 6 koraka
Video: Amazing arduino project 2024, Listopad
Anonim
Arduino kalkulator
Arduino kalkulator

Programiranje je uvijek zabavno, a Arduino je izvrsna platforma ako tek počinjete s ugrađenim programiranjem. U ovom ćemo vodiču izgraditi vlastiti kalkulator s Arduinom. Vrijednosti se mogu poslati putem tipkovnice (tipkovnica 4 × 4), a rezultat se može vidjeti na LCD zaslonu (16 × 2 matrična točka). Ovaj kalkulator može izvesti jednostavne operacije poput zbrajanja, oduzimanja, množenja i dijeljenja s cijelim brojevima. Ali kad shvatite koncept, možete implementirati čak i znanstvene funkcije s ugrađenim funkcijama u Arduinu. Na kraju ovog projekta znat ćete kako koristiti 16x2 LCD i tipkovnicu s Arduinom, a također i kako ih je lako programirati pomoću spremnika dostupne knjižnice. Također ćete razumjeti kako programirati svoj Arduino za izvršavanje određenog zadatka.

Korak 1: Potrebne stvari

Arduino Uno (bilo koja verzija će raditi) 16 × 2 LCD zaslon 4 × 4 tipkovnica 9V baterijaBordboard i spojne žice

Korak 2: Dijagram kruga

Kružni dijagram
Kružni dijagram

Korak 3: Arduino kalkulator program

Cjeloviti Arduino program za ovaj projekt dan je na kraju ovog projekta. Kod je podijeljen na male smislene dijelove i objašnjen u nastavku. Kao što je ranije rečeno, povezat ćemo LCD i tipkovnicu s Arduinom pomoću biblioteka. Pa ih prvo dodajmo u naš Arduino IDE. Knjižnica za LCD već je zadano uključena u vaš Arduino pa se ne moramo brinuti oko toga. Za knjižnicu tipkovnice kliknite vezu za preuzimanje s Githuba. Dobit ćete ZIP datoteku, a zatim dodajte ovaj lib u Arduino pomoću Sketch -> Include Library -> Add. ZIP file i pokažite mjesto ovoj preuzetoj datoteci. Kad završimo, spremni smo za programiranje. Iako smo koristili knjižnicu za korištenje tipkovnice, moramo spomenuti nekoliko detalja (prikazanih u nastavku) o tipkovnici na Arduinu. Promjenjive ROWS i COLS reći će koliko redaka i stupaca ima naša tipkovnica, a karta tipki prikazuje redoslijed kojim su tipke prisutne na tipkovnici. Tipkovnica koju koristim u ovom projektu izgleda ovako dolje, a karta ključeva također predstavlja istu. Dalje smo dolje spomenuli na koje je pinove tipkovnica spojena pomoću varijabilnog niza rowPins i colPins.const bajt ROWS = 4; // Četiri retka const byte COLS = 4; // Tri stupca // Definiranje tipki Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Spojite tipkovnicu ROW0, ROW1, ROW2 i ROW3 na ove Arduino pinove. Bajt colPins [COLS] = {4, 5, 6, 7}; // Spojite tipkovnicu COL0, COL1 i COL2 na ove Arduino pinove. Nakon što smo spomenuli koju tipkovnicu koristimo i kako je spojena, možemo stvoriti tipkovnicu koristeći te detalje koristeći donji redak Tipkovnica kpd = Tipkovnica (makeKeymap (tipke), rowPins, colPins, ROWS, COLS); // Stvorite tipkovnicu. Slično moramo reći i na koje je pinove Arduina spojen LCD. Prema našem dijagramu kola definicije bi bile poput ispod const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Igle na koje je LCD povezanLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // stvorimo LCD Unutar funkcije postavljanja samo prikažemo naziv projekta, a zatim nastavimo do while petlje gdje se nalazi glavni projekt. U osnovi, moramo provjeriti piše li se nešto na tipkovnici, ako smo upisali moramo prepoznati ono što se upisuje, a zatim pretvoriti u varijablu kada se pritisne “=”, moramo izračunati rezultat, a zatim ga konačno prikazati na LCD -u. To je upravo ono što se radi unutar funkcije petlje kao što je prikazano ispod key = kpd.getKey (); // spremanje vrijednosti pritisnutog ključa u charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Ono što se događa unutar svake funkcije objašnjeno je pomoću redaka komentara, prođite kroz donji kôd u nastavku, petljajte po njemu kako biste razumjeli kako zapravo radi. Ako sumnjate u određenu liniju, slobodno upotrijebite odjeljak komentara ili forume.

Korak 4:

Korak 5: Rad Arduino kalkulatora

Rad Arduino kalkulatora
Rad Arduino kalkulatora

Povežite se prema dijagramu strujnog kruga i prenesite donji kod. Ako se prikaže pogreška, provjerite jeste li dodali knjižnicu prema gornjim uputama. Također možete pokušati simulacijom provjeriti je li problem u vašem hardveru. Ako se sve učini kako bi trebalo biti, tada će vaš hardver izgledati otprilike ovako u nastavku s LCD -om koji prikazuje ovaj Arduino kalkulator koristeći 4x4 tipkovnicu u akciji Budući da ovdje korištena tipkovnica nema odgovarajuće oznake, pretpostavio sam da su abecede operatori kao dolje navedeni Znak na tipkovnici Pretpostavlja se da je zbrajanje “A” (+) “B” Oduzimanje (-) “C” Množenje (*) “D” Podjela (/) “*” Jasno (C) “#” Jednako (=) Možete upotrijebite oznaku da biste zapisali što svaki gumb zapravo predstavlja. Kad to učinite, možete izravno početi koristiti kalkulator. Upišite broj i pojavit će se u drugom retku, pritisnite operand i upišite svoj drugi broj, a zatim pritisnite tipku "#" da biste dobili rezultat. Također možete pokušati izgraditi ovaj Arduino kalkulator zasnovan na dodirnom zaslonu.

Korak 6: Kodiranje

/ * * Program kalkulatora Arduino tipkovnice */#include // Datoteka zaglavlja za LCD s https://www.arduino.cc/en/Reference/LiquidCrystal#include // Datoteka zaglavlja za tipkovnicu s https://github.com/ Chris-A/Keypadconst byte ROWS = 4; // Četiri retka const byte COLS = 4; // Tri stupca // Definiranje tipki Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Spojite tipkovnicu ROW0, ROW1, ROW2 i ROW3 na ove Arduino pinove. Bajt colPins [COLS] = {4, 5, 6, 7}; // Spojite tipkovnicu COL0, COL1 i COL2 na ove Arduino pinove. Tipkovnica kpd = Tipkovnica (makeKeymap (ključevi), rowPins, colPins, ROWS, COLS); // Stvorimo Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Igle na koje je LCD povezanLiquidCrystal lcd (rs, en, d4, d5, d6, d7); dugo Num1, Num2, Broj; char ključ, akcija; boolean result = false; void setup () {lcd.begin (16, 2); // Koristimo 16*2 LCD zaslon lcd.print ("DIY Calculator"); // Prikaz uvodne poruke lcd.setCursor (0, 1); // postavite kursor na stupac 0, redak 1 lcd.print ("-CircuitDigest"); // Prikaz odgode uvodne poruke (2000); // Pričekajte da zaslon prikaže informacije lcd.clear (); // Zatim ga očistimo} void loop () {key = kpd.getKey (); // spremanje vrijednosti pritisnutog ključa u charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Zatim ga očistite if (key == '*') // Ako pritisnete gumb Cancel {Serial.println ("Button Cancel"); Broj = Num1 = Num2 = 0; result = false;} if (key == '1') // Ako se pritisne gumb 1 {Serial.println ("gumb 1"); if (Broj == 0) Broj = 1; else Number = (Broj*10) + 1; // Dvaput pritisnut} if (key == '4') // Ako je pritisnuta tipka 4 {Serial.println ("Button 4"); if (Broj == 0) Broj = 4; else Number = (Broj*10) + 4; // Dvaput pritisnuto} if (key == '7') // Ako je pritisnuta tipka 7 {Serial.println ("Button 7"); if (Broj == 0) Broj = 7; else Number = (Broj*10) + 7; // Dvaput pritisnuto} if (key == '0') {Serial.println ("Button 0"); // Tipka 0 je pritisnuta ako (Broj == 0) Broj = 0; else Number = (Broj*10) + 0; // Dvaput pritisnuto} if (key == '2') // Pritisnite 2. gumb {Serial.println ("Button 2"); if (Broj == 0) Broj = 2; else Number = (Broj*10) + 2; // Dvaput pritisnuto} if (key == '5') {Serial.println ("Button 5"); if (Broj == 0) Broj = 5; else Number = (Broj*10) + 5; // Dvaput pritisnuto} if (key == '8') {Serial.println ("Button 8"); if (Broj == 0) Broj = 8; else Number = (Broj*10) + 8; // Dvaput pritisnuto} if (key == '#') {Serial.println ("Button Equal"); Num2 = Broj; rezultat = istina; } if (key == '3') {Serial.println ("Gumb 3"); if (Broj == 0) Broj = 3; else Number = (Broj*10) + 3; // Dvaput pritisnuto} if (key == '6') {Serial.println ("Button 6"); if (Broj == 0) Broj = 6; else Number = (Broj*10) + 6; // Dvaput pritisnuto} if (key == '9') {Serial.println ("Button 9"); if (Broj == 0) Broj = 9; else Number = (Broj*10) + 9; // Dvaput pritisnut} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Otkrivanje gumba u stupcu 4 {Num1 = Number; Broj = 0; if (key == 'A') {Serial.println ("Dodatak"); action = '+';} if (key == 'B') {Serial.println ("Oduzimanje"); akcija = '-'; } if (key == 'C') {Serial.println ("Množenje"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} kašnjenje (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (akcija == '-') Broj = Num1-Num2; if (akcija == '*') Broj = Num1*Num2; if (akcija == '/') Broj = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // postavite kursor na stupac 0, redak 1 lcd.print (Num1); lcd.print (akcija); lcd.tisak (Num2); if (rezultat == istina) {lcd.print ("="); lcd.print (Number);} // Prikaz rezultata lcd.setCursor (0, 1); // postavite kursor na stupac 0, redak 1 lcd.print (Broj); // Prikaz rezultata}

Preporučeni: