Tartalomjegyzék:

Arduino számológép: 6 lépés
Arduino számológép: 6 lépés

Videó: Arduino számológép: 6 lépés

Videó: Arduino számológép: 6 lépés
Videó: Amazing arduino project 2024, Október
Anonim
Arduino számológép
Arduino számológép

A programozás mindig szórakoztató, és az Arduino egy csodálatos platform, ha még csak most kezdi el használni a beágyazott programozást. Ebben az oktatóanyagban saját számológépünket építjük fel Arduino segítségével. Az értékeket billentyűzeten (4 × 4 billentyűzet) keresztül lehet elküldeni, és az eredményt LCD képernyőn (16 × 2 pontmátrix) tekintheti meg. Ez a számológép olyan egyszerű műveleteket hajthat végre, mint az összeadás, kivonás, szorzás és osztás egész számokkal. De ha megértette a koncepciót, akár tudományos funkciókat is megvalósíthat az Arduino beépített funkcióival. A projekt végén tudni fogja, hogyan kell használni a 16x2 -es LCD -t és a billentyűzetet az Arduino -val, és azt is, hogy milyen könnyű programozni nekik a könnyen használható rendelkezésre álló könyvtárak. Azt is megérti, hogyan programozhatja Arduino -ját egy adott feladat elvégzésére.

1. lépés: Szükséges dolgok

Arduino Uno (bármelyik verzió működni fog) 16 × 2 LCD kijelző 4 × 4 billentyűzet 9V akkumulátor Kenyértábla és csatlakozó vezetékek

2. lépés: Áramköri diagram

Kördiagramm
Kördiagramm

3. lépés: Arduino kalkulátor program

A projekt teljes Arduino programja a projekt végén található. A kódot kis értelmes darabokra osztják, és az alábbiakban ismertetik. Amint azt korábban elmondtuk, egy LCD -t és billentyűzetet fogunk összekapcsolni az Arduino -val könyvtárak segítségével. Tehát először adjuk hozzá őket az Arduino IDE -hez. Az LCD -könyvtár alapértelmezés szerint már benne van az Arduino -ban, így nem kell aggódnunk. A billentyűzet könyvtárhoz kattintson a linkre, és töltse le a Githubból. Kap egy ZIP fájlt, majd adja hozzá ezt a lib -et az Arduino -hoz a Sketch -> Könyvtár beillesztése ->. ZIP fájl hozzáadásával, és mutassa meg a helyét erre a letöltött fájlra. Miután befejeztük, mindannyian készen állunk a programozásra. Annak ellenére, hogy a billentyűzet használatához könyvtárat használtunk, meg kell említenünk néhány (alább látható) részletet az Arduino billentyűzetéről. A ROWS és COLS változó megmondja, hogy a billentyűzetünk hány sorból és oszlopból áll, a billentyűzet pedig a billentyűk billentyűzetének sorrendjét mutatja. A billentyűzet, amelyet ebben a projektben használok, az alábbiak szerint néz ki, és a billentyűtérkép is ugyanezt jelenti. Az alábbiakban megemlítettük, hogy a billentyűzet mely csapokhoz van csatlakoztatva a rowPins és colPins változó tömb használatával. Const byte ROWS = 4; // Négy soros összetételű bájt COLS = 4; // Három oszlop // Határozza meg a Keymapchar kulcsokat [SOROK] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Csatlakoztassa a ROW0, ROW1, ROW2 és ROW3 billentyűzetet ezekhez az Arduino csapokhoz. Byte colPins [COLS] = {4, 5, 6, 7}; // Csatlakoztassa a COL0, COL1 és COL2 billentyűzetet ezekhez az Arduino érintkezőkhöz. Miután megemlítettük, hogy milyen típusú billentyűzetet használunk, és hogyan van csatlakoztatva, az alábbi sor segítségével létrehozhatjuk a billentyűzetet. Billentyűzet kpd = Keypad (makeKeymap (keys), sorTű, colPins, SOR, COLS); // A billentyűzet létrehozása Hasonlóképpen azt is meg kell mondanunk, hogy az Arduino mely érintkezőihez van csatlakoztatva az LCD. Áramköri diagramunk szerint a definíciók az alábbiak szerint lennének: int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Tüskék, amelyekhez az LCD csatlakozikLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // az LCD létrehozása mit gépelünk, majd a „=” megnyomásakor átalakítjuk változóvá, ki kell számolnunk az eredményt, majd végül megjelenítenünk az LCD -n. Pontosan ez történik a ciklusfüggvényen belül, ahogy az alább látható: keykey = kpd.getKey (); // a lenyomott billentyű értékének tárolása egy charif -ban (kulcs! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Hogy mi történik az egyes funkciókban, azt a megjegyzéssorok segítségével magyarázzuk el, olvassuk el az alábbi teljes kódot, babráljunk vele, hogy megértsük, hogyan is működik valójában. Ha kétségei vannak egy adott sorral kapcsolatban, bátran használja a megjegyzések részt vagy a fórumokat.

4. lépés:

5. lépés: Az Arduino számológép működése

Az Arduino számológép működése
Az Arduino számológép működése

Csatlakoztassa a kapcsolásokat a kapcsolási rajz szerint, és töltse fel az alábbi kódot. Ha hibát jelez, győződjön meg róla, hogy hozzáadta a könyvtárat a fenti utasításoknak megfelelően. A szimulációt is kipróbálhatja annak ellenőrzésére, hogy a probléma a hardverrel van -e. Ha minden a megszokott módon történik, akkor a hardver valahogy így fog kinézni, az LCD kijelzőn ez jelenik meg. Arduino számológép 4x4 billentyűzetet használ működésben Mivel az itt használt billentyűzet nem rendelkezik megfelelő jelölésekkel, feltételeztem, hogy az ábécék operátorok az alábbiakban felsorolt karakterek a billentyűzeten Feltételezett "A" összeadás (+) "B" kivonás (-) "C" szorzás (*) "D" osztás (/) "*" Tiszta (C) "#" Egyenlő (=) jelölővel írja fel, hogy az egyes gombok valójában mit jelentenek. Ezzel megtörténhet a számológép közvetlen használata. Gépelje be a számot, és megjelenik a második sorban, nyomja meg az operandust, és írja be a második számot, majd nyomja meg a „#” gombot, hogy megkapja az eredményt. Megpróbálhatja felépíteni ezt az érintőképernyős Arduino számológépet is.

6. lépés: Kód

/ * * Arduino billentyűzet -kalkulátor program */#include // Fejlécfájl LCD -hez a https://www.arduino.cc/en/Reference/LiquidCrystal#include // Fejlécfájl a billentyűzethez a https://github.com/ webhelyen Chris-A/Billentyűzet-bájt ROWS = 4; // Négy soros összetételű bájt COLS = 4; // Három oszlop // Határozza meg a Keymapchar kulcsokat [SOROK] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Csatlakoztassa a ROW0, ROW1, ROW2 és ROW3 billentyűzetet ezekhez az Arduino csapokhoz. Byte colPins [COLS] = {4, 5, 6, 7}; // Csatlakoztassa a COL0, COL1 és COL2 billentyűzetet ezekhez az Arduino érintkezőkhöz. // Hozza létre a billentyűzet -összeállítást int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Tüskék, amelyekhez az LCD csatlakozikLiquidCrystal lcd (rs, en, d4, d5, d6, d7); hosszú Num1, Num2, Number; char kulcs, akció; logikai eredmény = hamis; void setup () {lcd.begin (16, 2); // 16*2 LCD kijelzőt használunk lcd.print ("DIY Calculator"); // Intro üzenet megjelenítése lcd.setCursor (0, 1); // állítsa a kurzort a 0 oszlop 1. sorára lcd.print ("-CircuitDigest"); // Intro üzenet késleltetés megjelenítése (2000); // Várja meg, amíg a kijelzőn megjelenik az info lcd.clear (); // Ezután tisztítsa meg} void loop () {key = kpd.getKey (); // a lenyomott billentyű értékének tárolása egy charif -ban (kulcs! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Ezután tisztítsa meg, ha (key == '*') // Ha a Cancel gombot megnyomja {Serial.println ("Button Cancel"); Szám = Szám1 = Szám2 = 0; eredmény = hamis;} if (kulcs == '1') // Ha megnyomja az 1 gombot {Serial.println ("Button 1"); if (Szám == 0) Szám = 1; else Szám = (Szám*10) + 1; // Kétszer megnyomva} if (key == '4') // Ha megnyomja a 4. gombot {Serial.println ("4. gomb"); if (Szám == 0) Szám = 4; else Szám = (Szám*10) + 4; // Kétszer megnyomva} if (key == '7') // Ha megnyomja a 7. gombot {Serial.println ("7. gomb"); if (Szám == 0) Szám = 7; else Szám = (Szám*10) + 7; // kétszer megnyomva} if (key == '0') {Serial.println ("0 gomb"); // A 0 gombot megnyomja, ha (Szám == 0) Szám = 0; else Szám = (Szám*10) + 0; // Kétszer megnyomva}, ha (kulcs == '2') // A 2. gomb megnyomása {Serial.println ("Button 2"); if (Szám == 0) Szám = 2; else Szám = (Szám*10) + 2; // kétszer megnyomva} if (key == '5') {Serial.println ("5. gomb"); if (Szám == 0) Szám = 5; else Szám = (Szám*10) + 5; // kétszer megnyomva} if (key == '8') {Serial.println ("Button 8"); if (Szám == 0) Szám = 8; else Szám = (Szám*10) + 8; // kétszer megnyomva} if (key == '#') {Serial.println ("Button Equal"); Num2 = Szám; eredmény = igaz; } if (kulcs == '3') {Serial.println ("3. gomb"); if (Szám == 0) Szám = 3; else Szám = (Szám*10) + 3; // kétszer megnyomva} if (key == '6') {Serial.println ("6. gomb"); if (Szám == 0) Szám = 6; else Szám = (Szám*10) + 6; // kétszer megnyomva} if (key == '9') {Serial.println ("Button 9"); if (Szám == 0) Szám = 9; else Szám = (Szám*10) + 9; // Kétszer megnyomva} if (billentyű == 'A' || gomb == 'B' || gomb == 'C' || gomb == 'D') // Gombok észlelése a 4. oszlopban {Num1 = Szám; Szám = 0; if (kulcs == 'A') {Serial.println ("Kiegészítés"); action = '+';} if (kulcs == 'B') {Serial.println ("Kivonás"); cselekvés = '-'; } if (kulcs == 'C') {Serial.println ("Szorzás"); action = '*';} if (kulcs == 'D') {Serial.println ("Devesion"); action = '/';} késleltetés (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') Szám = Num1-Num2; if (action == '*') Number = Num1*Num2; if (action == '/') Number = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // állítsa a kurzort a 0 oszlop 1. sorára lcd.print (Num1); lcd.print (akció); lcd.print (Num2); if (eredmény == igaz) {lcd.print ("="); lcd.print (Szám);} // Az eredmény megjelenítése lcd.setCursor (0, 1); // állítsa a kurzort a 0 oszlop 1. sorára lcd.print (szám); // Az eredmény megjelenítése}

Ajánlott: