Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
Pozdravljeni fantje, v tem navodilu bomo z Arduinom naredili kalkulator, ki lahko naredi osnovne izračune. V osnovi bomo vzeli vnos s tipkovnice 4x4 in natisnili podatke na 16x2 LCD zaslonu, arduino pa bo naredil izračune.
Korak: Stvari, ki jih potrebujete
Za ta navodila bomo potrebovali naslednje: Arduino Uno (katera koli različica bo delovala)
16 × 2 LCD zaslon
4 × 4 tipkovnica 9V baterija Bboardboard Priključitev žic
2. korak: Povezave
Celoten diagram vezja tega projekta kalkulatorja Arduino je naveden zgoraj. Priključek +5V in ozemljitev, prikazan na shemi vezja, lahko dobite iz 5V in ozemljitvenega zatiča Arduina. Arduino lahko napajate iz prenosnega računalnika ali prek vtičnice DC z adapterjem 12V ali baterijo 9 V. LCD upravljamo v 4-bitnem načinu z Arduinom, tako da so na Arduino priključeni le zadnji štirje podatkovni bitovi LCD-ja. Tipkovnica bo imela 8 izhodnih zatičev, ki jih je treba priključiti od nožice 0 do nožice 7. Kot je prikazano zgoraj. Nekatere plošče Arduino lahko pri nalaganju programa prikažejo napako, če je na pin 0 in pin1 kaj povezano, zato, če pride do katerega, preprosto odstranite tipkovnico med nalaganjem programa.
3. korak: Koda
Kopirajte naslednjo kodo in naložite vanj svoj arduino:/ * * Program za kalkulator tipkovnice Arduino */#vključuje "LiquidCrystal.h" // Datoteka z glavo za LCD iz https://www.arduino.cc/en/Reference/LiquidCrystal# vključi "Keypad.h" // Datoteka z glavo za tipkovnico iz https://github.com/Chris--A/Keypadconst bajt ROWS = 4; // Štiri vrstice const byte COLS = 4; // Trije stolpci // Določimo tipke Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Povežite tipkovnico ROW0, ROW1, ROW2 in ROW3 s temi Arduino zatiči. Bajt colPins [COLS] = {4, 5, 6, 7}; // Povežite tipkovnico COL0, COL1 in COL2 s temi Arduino zatiči. Tipkovnica kpd = Tipkovnica (makeKeymap (tipke), rowPins, colPins, ROWS, COLS); // Ustvari Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Zatiči, na katere je priključen LCD LCD LiquidCrystal (rs, en, d4, d5, d6, d7); dolga Num1, Num2, Število; char ključ, akcija; logični rezultat = false; void setup () {lcd.begin (16, 2); // Uporabljamo 16*2 LCD zaslon lcd.print ("DIY Calculator"); // Prikaz uvodnega sporočila lcd.setCursor (0, 1); // nastavimo kazalec na stolpec 0, zamik prve vrstice (2000); // Počakajte, da se na zaslonu prikaže info lcd.clear (); // Nato ga očistimo} void loop () {key = kpd.getKey (); // shranjevanje pritisnjene vrednosti ključa v charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Nato ga očistimo, če (key == '*') // Če pritisnemo gumb za preklic {Serial.println ("Button Cancel"); Število = Num1 = Num2 = 0; result = false;} if (key == '1') // Če pritisnete gumb 1 {Serial.println ("Button 1"); če (Število == 0) Število = 1; else Število = (Število*10) + 1; // Dvakrat pritisnjen} if (key == '4') // Če pritisnemo gumb 4 {Serial.println ("Button 4"); če (Število == 0) Število = 4; else Število = (Število*10) + 4; // Dvakrat pritisnjen} if (key == '7') // Če pritisnemo gumb 7 {Serial.println ("Button 7"); če (Število == 0) Število = 7; else Število = (Število*10) + 7; // Dvakrat pritisnjen} if (key == '0') {Serial.println ("Button 0"); // Gumb 0 pritisnemo, če (Število == 0) Število = 0; else Število = (Število*10) + 0; // dvakrat pritisnjen} if (key == '2') // pritisnjen gumb 2 {Serial.println ("gumb 2"); če (Število == 0) Število = 2; else Število = (Število*10) + 2; // Dvakrat pritisnjen} if (key == '5') {Serial.println ("Button 5"); če (Število == 0) Število = 5; else Število = (Število*10) + 5; // Dvakrat pritisnjen} if (key == '8') {Serial.println ("Button 8"); če (Število == 0) Število = 8; else Število = (Število*10) + 8; // Dvakrat pritisnjen} if (key == '#') {Serial.println ("Button Equal"); Num2 = Število; rezultat = res; } if (key == '3') {Serial.println ("Gumb 3"); če (Število == 0) Število = 3; else Število = (Število*10) + 3; // Dvakrat pritisnjen} if (key == '6') {Serial.println ("Button 6"); če (Število == 0) Število = 6; else Število = (Število*10) + 6; // Dvakrat pritisnjen} if (key == '9') {Serial.println ("Button 9"); če (Število == 0) Število = 9; else Število = (Število*10) + 9; // Dvakrat pritisnjen} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Zaznavanje gumbov v stolpcu 4 {Num1 = Number; Število = 0; if (key == 'A') {Serial.println ("Dodatek"); action = '+';} if (key == 'B') {Serial.println ("Odštevanje"); dejanje = '-'; } if (key == 'C') {Serial.println ("Množenje"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} zamik (100); }}
void CalculateResult () {if (action == '+') Number = Num1+Num2; if (dejanje == '-') Število = Num1-Num2; if (dejanje == '*') Število = Num1*Num2; if (dejanje == '/') Število = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // nastavimo kazalec na stolpec 0, vrstica 1 lcd.print (Num1); lcd.print (dejanje); lcd.print (Num2); if (rezultat == res) {lcd.print ("="); lcd.print (Number);} // Prikaz rezultata lcd.setCursor (0, 1); // nastavimo kazalec na stolpec 0, vrstica 1 lcd.print (Število); // Prikaz rezultata}
4. korak: Izhod kalkulatorja
Tako smo dokončali povezave in kodo naložili v arduino in čas je, da priklopi napajanje ter naredi nekaj izračunov; kot vidite, delam izračune s tipkovnico, rezultate pa si lahko ogledate na lcd -ju. Zato se zabavajte pri izdelavi lastnega kalkulatorja z lastnimi rokami z arduinom.