Përmbajtje:

Arduino Llogaritësi: 6 hapa
Arduino Llogaritësi: 6 hapa

Video: Arduino Llogaritësi: 6 hapa

Video: Arduino Llogaritësi: 6 hapa
Video: Функция Arduino Millis поясняется 3 примерами 2024, Nëntor
Anonim
Llogaritësi Arduino
Llogaritësi Arduino

Programimi është gjithmonë argëtues dhe Arduino është një platformë e mrekullueshme nëse sapo po filloni me programimin e integruar. Në këtë tutorial ne do të ndërtojmë llogaritësin tonë me Arduino. Vlerat mund të dërgohen përmes një tastiere (4 × 4 tastiera) dhe rezultati mund të shihet në një ekran LCD (16 × 2 Dot-matrix). Ky kalkulator mund të kryejë operacione të thjeshta si Mbledhja, Zbritja, Shumëzimi dhe Pjestimi me numra të plotë. Por sapo të kuptoni konceptin, mund të zbatoni edhe funksione shkencore me funksionet e integruara të Arduino -s. Në fund të këtij projekti do të dini si të përdorni një LCD 16x2 dhe Tastiera me Arduino dhe gjithashtu sa e lehtë është të programoni për ta duke përdorur me lehtësi bibliotekat në dispozicion. Ju gjithashtu do të kuptoni se si të programoni Arduino -n tuaj për të kryer një detyrë të veçantë.

Hapi 1: Gjërat e kërkuara

Arduino Uno (Çdo version do të funksionojë) 16 × 2 LCD Ekran 4 × 4 Tastiera Bateri 9V Baterboard dhe tela lidhës

Hapi 2: Diagrami i Qarkut

Diagrami i qarkut
Diagrami i qarkut

Hapi 3: Programi i Llogaritësit Arduino

Programi i plotë Arduino për këtë projekt jepet në fund të këtij projekti. Kodi është i ndarë në pjesë të vogla kuptimplota dhe shpjegohet më poshtë. Siç u tha më herët ne do të ndërlidhim një LCD dhe tastierë me Arduino duke përdorur bibliotekat. Pra, le t'i shtojmë së pari në Arduino IDE -në tonë. Biblioteka për LCD tashmë është përfshirë në Arduino tuaj si parazgjedhje, kështu që nuk duhet të shqetësohemi për këtë. Për bibliotekën e tastierës klikoni në lidhjen për ta shkarkuar nga Github. Ju do të merrni një skedar ZIP, pastaj shtoni këtë lib te Arduino by Sketch -> Përfshi Bibliotekën -> Shtoni skedarin. ZIP dhe tregoni vendndodhjen në këtë skedar të shkarkuar. Pasi të kemi mbaruar, të gjithë jemi gati për programim. Edhe pse kemi përdorur një bibliotekë për përdorimin e një tastiere, duhet të përmendim disa detaje (të paraqitura më poshtë) në lidhje me tastierën në Arduino. Variabli ROWS dhe COLS do të tregojë sa rreshta dhe kolona ka tastiera jonë dhe harta e tastit tregon rendin në të cilin çelësat janë të pranishëm në tastierë. Tastiera që unë jam duke përdorur në këtë projekt duket si më poshtë në hartën kryesore gjithashtu paraqet të njëjtën gjë. Më tej më poshtë kemi përmendur se në cilat kunja është lidhur tastiera duke përdorur variablin varg rowPins dhe colPins. Konstatoj byte ROWS = 4; // Katër rreshta bajt konstacioni COLS = 4; // Tre kolona // Përcaktoni çelësat Keymapchar [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Lidhni tastierën ROW0, ROW1, ROW2 dhe ROW3 me këto kunja Arduino. Byte colPins [COLS] = {4, 5, 6, 7}; // Lidhni tastierën COL0, COL1 dhe COL2 me këto kunja Arduino. Pasi të kemi përmendur se çfarë lloji të tastierës po përdorim dhe si lidhet, ne mund të krijojmë tastierën duke përdorur ato detaje duke përdorur rreshtin më poshtë Keypad kpd = Keypad (makeKeymap (), rowPins, colPins, ROWS, COLS); // Krijoni tastierënNgjashëm ne gjithashtu duhet të tregojmë se me cilat kunja të Arduino -s është i lidhur LCD. Sipas diagramit tonë të qarkut përkufizimet do të ishin si më poshtëconst rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Kunjat me të cilat është lidhur LCD LCD LiquidCrystal (rs, en, d4, d5, d6, d7); Brenda funksionit të konfigurimit, ne vetëm shfaqim emrin e projektit dhe më pas vazhdojmë te laku while ku qëndron projekti kryesor. Në thelb, ne duhet të kontrollojmë nëse diçka është duke u shtypur në tastierë, nëse është e shtypur duhet të njohim çfarë është duke u shtypur dhe më pas konvertohet në një ndryshore kur shtypet “=” duhet të llogarisim rezultatin dhe më pas ta shfaqim përfundimisht në LCD. Kjo është pikërisht ajo që bëhet brenda funksionit të lakut siç tregohet më poshtë keykey = kpd.getKey (); // ruajtja e vlerës së shtypur të çelësit në një charif (kyç! = NO_KEY) DetectButtons (); nëse (rezultati == vërtetë) CalculateResult (); DisplayResult (); Ajo që ndodh brenda secilit funksion shpjegohet duke përdorur linjat e komenteve, kaloni kodin e plotë më poshtë, figuroni me të për të kuptuar se si funksionon në të vërtetë. Nëse keni ndonjë dyshim për një linjë të veçantë, mos ngurroni të përdorni pjesën e komenteve ose forume.

Hapi 4:

Hapi 5: Puna e Llogaritësit Arduino

Puna e Llogaritësit Arduino
Puna e Llogaritësit Arduino

Bëni lidhjet sipas diagramit të qarkut dhe ngarkoni kodin më poshtë. Nëse shfaq gabim sigurohuni që keni shtuar bibliotekën sipas udhëzimit të dhënë më sipër. Ju gjithashtu mund të provoni simulimin për të kontrolluar nëse problemi është me pajisjen tuaj. Nëse gjithçka është bërë ashtu siç supozohet të jetë, atëherë pajisja juaj do të duket diçka si kjo më poshtë me LCD -në që shfaq këtë Llogaritësin Arduino duke përdorur tastierën 4x4 në veprim Meqenëse tastiera e përdorur këtu nuk ka shënimet e duhura në të, kam supozuar se Alfabetet janë operatorë si të listuara më poshtë Karakteri në tastierë Supozohet të jetë "A" Mbledhje (+) "B" Zbritje (-) "C" Shumëzim (*) "D" Division (/) "*" Pastro (C) "#" alsshtë e barabartë (=) Mund të përdorni një shënues për të shkruar atë që përfaqëson secili buton. Me këtë, ju mund të filloni drejtpërdrejt të përdorni kalkulatorin. Shkruani numrin dhe do të shfaqet në rreshtin e dytë shtypni operandin dhe shtypni numrin tuaj të dytë në fund shtypni butonin "#" për të marrë rezultatin tuaj. Ju gjithashtu mund të provoni të ndërtoni këtë kalkulator Arduino të bazuar në ekran me prekje.

Hapi 6: Kodi

/ * * Programi i llogaritësit të tastierës Arduino */#përfshijnë // Skedarin e kokës për LCD nga https://www.arduino.cc/en/Reference/LiquidCrystal#include // Skedari i kokës për tastierën nga https://github.com/ Chris-A/Keypadconst byte RRESA = 4; // Katër rreshta bajt konstacioni COLS = 4; // Tre kolona // Përcaktoni çelësat 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}; // Lidhni tastierën ROW0, ROW1, ROW2 dhe ROW3 me këto kunja Arduino. Byte colPins [COLS] = {4, 5, 6, 7}; // Lidhni tastierën COL0, COL1 dhe COL2 me këto kunja Arduino. Keypad kpd = Keypad (makeKeymap (çelësat), rowPins, colPins, ROWS, COLS); // Krijoni tastierën e tastierës int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Kunjat me të cilat është lidhur LCD LCD LiquidCrystal (rs, en, d4, d5, d6, d7); i gjatë Num1, Num2, Numri; çelës char, veprim; rezultati boolean = false; void setup () {lcd.fillo (16, 2); // Ne po përdorim një ekran LCD 16*2 lcd.print ("Llogaritësi DIY"); // Shfaq një mesazh hyrës lcd.setCursor (0, 1); // vendosni kursorin në kolonën 0, rreshti 1 lcd.print ("-CircuitDigest"); // Shfaq një vonesë të mesazhit hyrës (2000); // Prisni që ekrani të shfaqë informacionin lcd.clear (); // Pastaj pastrojeni} void loop () {key = kpd.getKey (); // ruajtja e vlerës së shtypur të çelësit në një charif (kyç! = NO_KEY) DetectButtons (); nëse (rezultati == vërtetë) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Pastaj pastrojeni nëse (kyç == '*') // Nëse butoni anulohet shtypet {Serial.println ("Butoni Anulo"); Numri = Num1 = Num2 = 0; rezultati = false;} nëse (çelësi == '1') // Nëse shtypet butoni 1 {Serial.println ("Butoni 1"); nëse (Numri == 0) Numri = 1; tjetër Numri = (Numri*10) + 1; // Shtypur dy herë} nëse (çelësi == '4') // Nëse shtypet butoni 4 {Serial.println ("Butoni 4"); nëse (Numri == 0) Numri = 4; tjetër Numri = (Numri*10) + 4; // Shtypur dy herë} nëse (çelësi == '7') // Nëse shtypet butoni 7 {Serial.println ("Butoni 7"); nëse (Numri == 0) Numri = 7; tjetër Numri = (Numri*10) + 7; // Shtypur dy herë} if (kyç == '0') {Serial.println ("Butoni 0"); // Butoni 0 shtypet nëse (Numri == 0) Numri = 0; tjetër Numri = (Numri*10) + 0; // Shtypur dy herë} nëse (çelësi == '2') // Butoni 2 shtypet {Serial.println ("Butoni 2"); nëse (Numri == 0) Numri = 2; tjetër Numri = (Numri*10) + 2; // Shtypur dy herë} nëse (çelësi == '5') {Serial.println ("Butoni 5"); nëse (Numri == 0) Numri = 5; tjetër Numri = (Numri*10) + 5; // Shtypur dy herë} if (kyç == '8') {Serial.println ("Butoni 8"); nëse (Numri == 0) Numri = 8; tjetër Numri = (Numri*10) + 8; // Shtypur dy herë} if (key == '#') {Serial.println ("Button Equal"); Num2 = Numri; rezultati = i vërtetë; } if (kyç == '3') {Serial.println ("Butoni 3"); nëse (Numri == 0) Numri = 3; tjetër Numri = (Numri*10) + 3; // Shtypur dy herë} nëse (çelësi == '6') {Serial.println ("Butoni 6"); nëse (Numri == 0) Numri = 6; tjetër Numri = (Numri*10) + 6; // Shtypur dy herë} if (kyç == '9') {Serial.println ("Butoni 9"); nëse (Numri == 0) Numri = 9; tjetër Numri = (Numri*10) + 9; // Shtypur dy herë} nëse (çelësi == 'A' || çelësi == 'B' || çelësi == 'C' || çelësi == 'D') // Zbulimi i butonave në Kolonën 4 {Num1 = Numri; Numri = 0; if (kyç == 'A') {Serial.println ("Shtesë"); veprim = '+';} nëse (çelësi == 'B') {Serial.println ("Zbritja"); veprim = '-'; } if (kyç == 'C') {Serial.println ("Shumëzimi"); action = '*';} if (kyç == 'D') {Serial.println ("Devesion"); veprim = '/';} vonesë (100); }} void CalculateResult () {if (action == '+') Numri = Num1+Num2; nëse (veprimi == '-') Numri = Num1-Num2; nëse (veprimi == '*') Numri = Num1*Num2; nëse (veprimi == '/') Numri = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // vendosni kursorin në kolonën 0, rreshti 1 lcd.print (Num1); lcd.print (veprim); lcd.print (Num2); nëse (rezultati == vërtetë) {lcd.print ("="); lcd.print (Numri);} // Shfaq rezultatin lcd.setCursor (0, 1); // vendosni kursorin në kolonën 0, rreshti 1 lcd.print (Numri); // Shfaq rezultatin}

Recommended: