Kazalo:

Arduino kalkulator: 6 korakov
Arduino kalkulator: 6 korakov

Video: Arduino kalkulator: 6 korakov

Video: Arduino kalkulator: 6 korakov
Video: Amazing arduino project 2024, Oktober
Anonim
Arduino kalkulator
Arduino kalkulator

Programiranje je vedno zabavno in Arduino je čudovita platforma, če šele začenjate z vgrajenim programiranjem. V tej vadnici bomo z Arduinom izdelali lasten kalkulator. Vrednosti se lahko pošljejo prek tipkovnice (tipkovnica 4 × 4), rezultat pa si lahko ogledate na LCD zaslonu (16 × 2 točkovna matrika). Ta kalkulator lahko izvede preproste operacije, kot so seštevanje, odštevanje, množenje in deljenje s celimi števili. Ko pa razumete koncept, lahko z vgrajenimi funkcijami Arduino izvedete celo znanstvene funkcije. Na koncu tega projekta boste vedeli, kako uporabljati 16x2 LCD in tipkovnico z Arduinom ter kako enostavno jih je programirati z lahkoto razpoložljive knjižnice. Prav tako boste razumeli, kako programirati svoj Arduino za izvajanje določene naloge.

1. korak: Potrebne stvari

Arduino Uno (katera koli različica bo delovala) 16 × 2 LCD zaslon 4 × 4 tipkovnica 9V baterija Bordna deska in povezovalne žice

2. korak: Shema vezja

Shema vezja
Shema vezja

Korak: Arduino kalkulator

Celoten program Arduino za ta projekt je naveden na koncu tega projekta. Koda je razdeljena na majhne pomembne kose in razložena spodaj. Kot smo že povedali, bomo LCD in tipkovnico povezali z Arduinom z uporabo knjižnic. Zato jih najprej dodajmo v naš Arduino IDE. Knjižnica za LCD je privzeto že vključena v vaš Arduino, zato nam ni treba skrbeti. Za knjižnico tipkovnice kliknite povezavo, da jo prenesete iz Github. Dobili boste datoteko ZIP, nato pa dodajte ta lib v Arduino s programom Sketch -> Vključi knjižnico -> Dodaj datoteko. ZIP in pokažite lokacijo na to preneseno datoteko. Ko smo končali, smo pripravljeni na programiranje. Čeprav smo uporabili knjižnico za uporabo tipkovnice, moramo omeniti nekaj podrobnosti (prikazanih spodaj) o tipkovnici za Arduino. Spremenljivka ROWS in COLS bo povedala, koliko vrstic in stolpcev ima naša tipkovnica, zemljevid tipk pa prikazuje vrstni red, v katerem so tipke na tipkovnici. Tipkovnica, ki jo uporabljam v tem projektu, je videti spodaj tako, da zemljevid ključev predstavlja isto. Nadalje smo omenili, na katere zatiče je tipkovnica povezana s spremenljivo matriko rowPins in colPins.const byte ROWS = 4; // Štiri vrstice const byte COLS = 4; // Trije stolpci // Določimo tipke Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; 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. Ko smo omenili, kakšno tipkovnico uporabljamo in kako je povezana, lahko s temi podrobnostmi ustvarimo tipkovnico s spodnjo vrstico Tipkovnica kpd = Tipkovnica (makeKeymap (tipke), rowPins, colPins, ROWS, COLS); // Ustvarjanje tipkovnice Podobno moramo tudi povedati, na katere nožice Arduina je priključen LCD. Po našem diagramu vezja bi bile definicije take kot spodaj const 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); // ustvarite LCD V notranjosti nastavitvene funkcije samo prikažemo ime projekta in nato nadaljujemo do zanke while, kjer leži glavni projekt. V bistvu moramo preveriti, ali se na tipkovnici kaj vnese, če moramo vnesti, moramo prepoznati kaj se tipka in nato pretvoriti v spremenljivko, ko pritisnemo “=”, moramo izračunati rezultat in ga nato končno prikazati na LCD -prikazovalniku. Točno to se naredi znotraj funkcije zanke, kot je prikazano spodaj key = kpd.getKey (); // shranjevanje pritisnjene vrednosti ključa v charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Kaj se zgodi v vsaki funkciji, je razloženo s pomočjo vrstic za komentarje, pojdite skozi celotno kodo spodaj, se poigrajte z njo, da razumete, kako dejansko deluje. Če dvomite o določeni vrstici, uporabite razdelek za komentarje ali forume.

4. korak:

5. korak: Delo Arduino kalkulatorja

Delovanje Arduino kalkulatorja
Delovanje Arduino kalkulatorja

Povežite se po shemi vezja in naložite spodnjo kodo. Če se prikaže napaka, se prepričajte, da ste knjižnico dodali po zgornjih navodilih. Poskusite lahko tudi s simulacijo, da preverite, ali je težava v strojni opremi. Če je vse narejeno tako, kot bi moralo biti, bo spodaj vaša strojna oprema videti nekako takole z LCD -prikazovalnikom tega kalkulatorja Arduino s tipkovnico 4x4 v akciji Ker tukaj uporabljena tipkovnica nima ustreznih oznak, sem predpostavil, da so abecede operaterji kot spodaj naveden Znak na tipkovnici Domneva se, da je dodatek “A” (+) “B” Odštevanje (-) “C” Množenje (*) “D” Delitev (/) “*” Počisti (C) “#” Enako (=) Lahko uporabite oznako, da napišete, kaj vsak gumb dejansko predstavlja. Ko to storite, lahko neposredno začnete uporabljati kalkulator. Vnese številko in se bo pojavila v drugi vrstici, pritisnite operand in vnesite drugo številko, nazadnje pritisnite tipko "#", da dobite rezultat. Poskusite lahko tudi z izdelavo tega kalkulatorja Arduino na osnovi zaslona na dotik.

6. korak: Koda

/ * * Program kalkulatorja tipkovnice Arduino */#include // Datoteka glave za LCD z https://www.arduino.cc/en/Reference/LiquidCrystal#include // Datoteka z glavo za tipkovnico s 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, vrstica 1 lcd.print ("-CircuitDigest"); // Prikaz zakasnitve uvodnega sporočila (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}

Priporočena: