Obsah:

Kalkulačka Arduino: 6 krokov
Kalkulačka Arduino: 6 krokov

Video: Kalkulačka Arduino: 6 krokov

Video: Kalkulačka Arduino: 6 krokov
Video: Урок ардуино 6 1 часть 2024, Október
Anonim
Kalkulačka Arduino
Kalkulačka Arduino

Programovanie je vždy zábava a Arduino je úžasná platforma, ak s vstavaným programovaním ešte len začínate. V tomto tutoriáli si vytvoríme vlastnú kalkulačku s Arduino. Hodnoty je možné odoslať pomocou klávesnice (klávesnica 4 × 4) a výsledok je možné zobraziť na obrazovke LCD (16 × 2 bodová matica). Táto kalkulačka mohla vykonávať jednoduché operácie ako sčítanie, odčítanie, násobenie a delenie s celými číslami. Ale akonáhle porozumiete konceptu, môžete pomocou vstavaných funkcií Arduina implementovať aj vedecké funkcie. Na konci tohto projektu budete vedieť, ako používať 16x2 LCD a klávesnicu s Arduinom, a tiež to, ako ľahko sa im programuje pomocou pohotového programovania. dostupné knižnice. Pochopíte tiež, ako naprogramovať svoje Arduino na splnenie konkrétnej úlohy.

Krok 1: Potrebné veci

Arduino Uno (akákoľvek verzia bude fungovať) 16 × 2 LCD displej 4 × 4 klávesnica 9V batéria Breadboard a prepojovacie vodiče

Krok 2: Schéma zapojenia

Schéma zapojenia
Schéma zapojenia

Krok 3: Program kalkulačky Arduino

Kompletný program Arduino pre tento projekt je uvedený na konci tohto projektu. Kód je rozdelený na malé zmysluplné kúsky a vysvetlený nižšie. Ako už bolo povedané, prepojíme LCD a klávesnicu s Arduino pomocou knižníc. Poďme ich teda najskôr pridať do nášho Arduino IDE. Knižnica pre LCD je už predvolene súčasťou vášho Arduina, takže si s tým nemusíme robiť starosti. Ak chcete knižnicu klávesnice, kliknite na odkaz a stiahnite si ju z Github. Dostanete súbor ZIP, potom pridajte toto lib do Arduino podľa Sketch -> Include Library -> Add. ZIP file a ukážte umiestnenie tohto stiahnutého súboru. Po dokončení sme všetci pripravení na programovanie. Aj keď sme použili knižnicu na používanie klávesnice, musíme spomenúť niekoľko podrobností (uvedených nižšie) o klávesnici pre Arduino. Premenná ROWS a COLS oznámi, koľko riadkov a stĺpcov má naša klávesnica, a mapa klávesov ukazuje poradie, v ktorom sa klávesy na klávesnici nachádzajú. Klávesnica, ktorú v tomto projekte používam, vyzerá nižšie na mape kľúčov rovnako. To isté predstavuje aj nižšie. Ďalej sme uviedli, ku ktorým kolíkom je klávesnica pripojená pomocou variabilného poľa rowPins a colPins.const byte ROWS = 4; // Štyri riadky bajtu COLS = 4; // Tri stĺpce // Definujte kľúče Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Pripojenie klávesnice ROW0, ROW1, ROW2 a ROW3 k týmto pinom Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // K týmto vývodom Arduino pripojte klávesnicu COL0, COL1 a COL2. Keď sme už spomenuli, aký typ klávesnice používame a ako je pripojená, pomocou týchto údajov môžeme vytvoriť klávesnicu pomocou nižšie uvedeného riadku. Klávesnica kpd = Klávesnica (makeKeymap (klávesy)), rowPins, colPins, ROWS, COLS); // Vytvorte klávesnicu Podobne musíme tiež povedať, ku ktorým kolíkom Arduina je pripojený LCD. Podľa nášho schémy zapojenia by definície boli nižšie uvedené ako int int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Piny, ku ktorým je pripojený LCDLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // vytvorte LCDV rámci funkcie nastavenia zobrazíme iba názov projektu a potom prejdeme do cyklu while, kde leží hlavný projekt. V zásade musíme skontrolovať, či sa na klávesnici niečo zadáva, ak je zadaný, musíme rozpoznať to, čo sa píše, a potom ho po stlačení „=“prevedie na premennú, musíme vypočítať výsledok a potom ho konečne zobraziť na LCD. To je presne to, čo sa deje vo funkcii slučky, ako je uvedené nižšiekey = kpd.getKey (); // uloženie hodnoty stlačeného kľúča do znaku (kľúč! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Čo sa deje v rámci každej funkcie, je vysvetlené pomocou riadkov s komentármi, prejdite úplným kódom nižšie a pohrávajte si s ním, aby ste pochopili, ako vlastne funguje. Ak máte akékoľvek pochybnosti o konkrétnom riadku, použite sekciu komentárov alebo fóra.

Krok 4:

Krok 5: Fungovanie kalkulačky Arduino

Fungovanie kalkulačky Arduino
Fungovanie kalkulačky Arduino

Pripojte podľa schémy zapojenia a nahrajte kód nižšie. Ak sa zobrazí chyba, uistite sa, že ste knižnicu pridali podľa vyššie uvedených pokynov. Môžete tiež vyskúšať simuláciu a skontrolovať, či je problém s vašim hardvérom. Ak je všetko vykonané tak, ako má, potom bude váš hardvér vyzerať takto nižšie s LCD displejom, ktorý zobrazuje túto kalkulačku Arduino s použitím klávesnice 4x4 v prevádzke Pretože tu použitá klávesnica nemá správne označenie, predpokladal som, že abecedy sú operátori ako nižšie uvedený znak na klávesnici Predpokladá sa, že sčítanie „A“(+) „B“Odčítanie (-) „C“Násobenie (*) „D“delenie (/) „*“Vymazať (C) „#“sa rovná (=) Môžete pomocou značky napíšte, čo každé tlačidlo skutočne predstavuje. Keď to urobíte, môžete priamo začať používať kalkulačku. Zadajte číslo a zobrazí sa v druhom riadku, stlačte operand a zadajte svoje druhé číslo, nakoniec stlačením klávesu „#“získate výsledok. Môžete si tiež vyskúšať zostrojenie tejto kalkulačky Arduino založenej na dotykovej obrazovke.

Krok 6: Kód

/ * * Program kalkulačky klávesnice Arduino */#include // Hlavičkový súbor pre LCD z https://www.arduino.cc/en/Reference/LiquidCrystal#include // Hlavičkový súbor pre klávesnicu z https://github.com/ Chris-A/Keypadconst byte ROWS = 4; // Štyri riadky bajtu COLS = 4; // Tri stĺpce // Definujte kľúče Keymapchar [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Pripojenie klávesnice ROW0, ROW1, ROW2 a ROW3 k týmto pinom Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // K týmto pinom Arduino pripojte klávesnicu COL0, COL1 a COL2. Keypad kpd = Keypad (makeKeymap (klávesy), rowPins, colPins, ROWS, COLS); // Vytvorte Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Piny, ku ktorým je pripojený LCDLiquidCrystal lcd (rs, en, d4, d5, d6, d7); dlhé Num1, Num2, Number; znakový kľúč, akcia; boolean result = false; void setup () {lcd.begin (16, 2); // Používame 16*2 LCD displej lcd.print („kalkulačka pre domácich majstrov“); // Zobrazenie úvodnej správy lcd.setCursor (0, 1); // nastav kurzor na stlpec 0, riadok 1 lcd.print ("-CircuitDigest"); // Zobrazenie oneskorenia úvodnej správy (2000); // Počkajte, kým sa na displeji nezobrazia informácie lcd.clear (); // Potom to vyčistite} void loop () {key = kpd.getKey (); // uloženie hodnoty stlačeného kľúča do znaku (kľúč! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } neplatné DetectButtons () {lcd.clear (); // Potom vyčistite if (key == '*') // Ak je stlačené tlačidlo Cancel {Serial.println ("Button Cancel"); Číslo = Číslo1 = Číslo2 = 0; result = false;} if (key == '1') // Ak je stlačené tlačidlo 1 {Serial.println ("Button 1"); ak (Číslo == 0) Číslo = 1; inak Číslo = (Číslo*10) + 1; // Dvakrát stlačené} if (kláves == '4') // Ak je stlačené tlačidlo 4 {Serial.println ("Button 4"); ak (Číslo == 0) Číslo = 4; inak Číslo = (Číslo*10) + 4; // Dvakrát stlačené} if (kláves == '7') // Ak je stlačené tlačidlo 7 {Serial.println ("Tlačidlo 7"); ak (Číslo == 0) Číslo = 7; inak Číslo = (Číslo*10) + 7; // Dvakrát stlačené} if (key == '0') {Serial.println ("Button 0"); // Tlačidlo 0 sa stlačí, ak (Číslo == 0) Číslo = 0; inak Číslo = (Číslo*10) + 0; // Dvakrát stlačené} if (kláves == '2') // Tlačidlo 2 je stlačené {Serial.println ("Tlačidlo 2"); ak (Číslo == 0) Číslo = 2; inak Číslo = (Číslo*10) + 2; // Dvakrát stlačené} if (kláves == '5') {Serial.println ("Button 5"); ak (Číslo == 0) Číslo = 5; inak Číslo = (Číslo*10) + 5; // Dvakrát stlačené} if (kláves == '8') {Serial.println ("Tlačidlo 8"); ak (Číslo == 0) Číslo = 8; inak Číslo = (Číslo*10) + 8; // Dvakrát stlačené} if (key == '#') {Serial.println ("Button Equal"); Num2 = číslo; výsledok = true; } if (key == '3') {Serial.println ("Button 3"); ak (Číslo == 0) Číslo = 3; inak Číslo = (Číslo*10) + 3; // Dvakrát stlačené} if (kláves == '6') {Serial.println ("Button 6"); ak (Číslo == 0) Číslo = 6; inak Číslo = (Číslo*10) + 6; // Dvakrát stlačené} if (kláves == '9') {Serial.println ("Tlačidlo 9"); ak (Číslo == 0) Číslo = 9; inak Číslo = (Číslo*10) + 9; // Dvakrát stlačené} if (kláves == 'A' || kláves == 'B' || kláves == 'C' || kláves == 'D') // Detekcia tlačidiel v stĺpci 4 {Num1 = číslo; Číslo = 0; if (key == 'A') {Serial.println ("Pridanie"); action = '+';} if (key == 'B') {Serial.println ("Subtraction"); action = '-'; } if (key == 'C') {Serial.println ("Násobenie"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} zdržanie (100); }} neplatné CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') Number = Num1-Num2; if (action == '*') Number = Num1*Num2; if (action == '/') Number = Num1/Num2; } neplatné DisplayResult () {lcd.setCursor (0, 0); // nastav kurzor na stlpec 0, riadok 1 lcd.print (Num1); lcd.print (akcia); lcd.print (Num2); if (result == true) {lcd.print ("="); lcd.print (Number);} // Zobrazí výsledok lcd.setCursor (0, 1); // nastav kurzor na stlpec 0, riadok 1 lcd.print (Number); // Zobraziť výsledok}

Odporúča: