2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Bok dečki, u ovoj uputi napravit ćemo kalkulator pomoću Arduina koji može obaviti osnovne izračune. Dakle, u osnovi ćemo uzeti ulaz s 4x4 tipkovnice i ispisati podatke na 16x2 LCD zaslonu, a arduino će izvršiti izračune.
Korak 1: Stvari koje trebate
Za ove upute trebat će nam sljedeće: Arduino Uno (bilo koja verzija će raditi)
16 × 2 LCD zaslon
4 × 4 tipkovnica 9V baterijaMreza za povezivanje
Korak 2: Veze
Cjeloviti dijagram ovog Arduino kalkulacijskog projekta dan je gore. Priključak +5V i uzemljenje prikazan na dijagramu kruga može se dobiti iz 5V i uzemljenja na Arduinu. Sam Arduino može se napajati s vašeg prijenosnog računala ili putem istosmjerne utičnice pomoću adaptera od 12 V ili baterije od 9 V. Radimo s LCD-om u 4-bitnom načinu rada s Arduinom, tako da su samo posljednja četiri bita podataka LCD-a spojena na Arduino. Tipkovnica će imati 8 izlaznih pinova koje je potrebno spojiti s pina 0 na pin 7 kao što je prikazano gore. Neke Arduino ploče mogu prikazati pogrešku tijekom učitavanja programa ako postoji nešto spojeno na pin 0 i pin1, pa ako naiđete na bilo koji, samo uklonite tipkovnicu tijekom učitavanja programa.
Korak 3: Kodirajte
Kopirajte sljedeći kôd i prenesite u njega svoj arduino:/ * * Arduino program za izračunavanje tipkovnice */#uključuje "LiquidCrystal.h" // Datoteka zaglavlja za LCD sa https://www.arduino.cc/en/Reference/LiquidCrystal# include "Keypad.h" // Datoteka zaglavlja za tipkovnicu s https://github.com/Chris--A/Keypadconst bajt 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, kašnjenje retka 1 (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}
Korak 4: Izlaz kalkulatora
Tako smo dovršili povezivanje i prenijeli kôd na arduino, vrijeme je da uključim napajanje i napravim neke izračune; kao što vidite, radim proračune s tipkovnicom, a rezultate možete vidjeti na LCD -u. Zato se zabavite izrađujući vlastiti diy kalkulator pomoću arduina.