Turinys:

„Arduino“skaičiuoklė: 6 žingsniai
„Arduino“skaičiuoklė: 6 žingsniai

Video: „Arduino“skaičiuoklė: 6 žingsniai

Video: „Arduino“skaičiuoklė: 6 žingsniai
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Liepa
Anonim
Arduino skaičiuoklė
Arduino skaičiuoklė

Programavimas visada yra įdomus, o „Arduino“yra puiki platforma, jei tik pradedate naudoti įterptąjį programavimą. Šioje pamokoje mes sukursime savo skaičiuoklę su „Arduino“. Vertės gali būti siunčiamos per klaviatūrą (4 × 4 klaviatūra), o rezultatus galima peržiūrėti LCD ekrane (16 × 2 taškų matrica). Šis skaičiuotuvas gali atlikti paprastas operacijas, tokias kaip sudėjimas, atėmimas, daugyba ir padalijimas su sveikais skaičiais. Bet kai suprasite koncepciją, galėsite įgyvendinti net mokslines funkcijas naudodami „Arduino“integruotas funkcijas. Šio projekto pabaigoje jūs žinosite, kaip naudoti 16x2 skystųjų kristalų ekraną ir klaviatūrą su „Arduino“, taip pat tai, kaip lengva juos programuoti naudojant prieinamos bibliotekos. Taip pat suprasite, kaip užprogramuoti „Arduino“tam tikrai užduočiai atlikti.

1 žingsnis: reikalingi dalykai

„Arduino Uno“(bet kuri versija veiks) 16 × 2 LCD ekranas 4 × 4 klaviatūra 9 V baterija Duonos lenta ir prijungimo laidai

2 žingsnis: grandinės schema

Grandinės schema
Grandinės schema

3 žingsnis: „Arduino“skaičiuoklės programa

Visa šio projekto „Arduino“programa pateikiama šio projekto pabaigoje. Kodas yra padalintas į mažas prasmingas dalis ir paaiškinamas toliau. Kaip minėta anksčiau, mes naudosime LCD ir klaviatūrą su „Arduino“naudodami bibliotekas. Taigi pirmiausia pridėkime juos prie mūsų „Arduino IDE“. LCD biblioteka pagal numatytuosius nustatymus jau yra įtraukta į jūsų „Arduino“, todėl mums nereikia jaudintis. Norėdami gauti klaviatūros biblioteką, spustelėkite nuorodą ir atsisiųskite ją iš „Github“. Gausite ZIP failą, tada pridėkite šį lib prie „Arduino“pagal eskizą -> Įtraukti biblioteką -> Pridėti. ZIP failą ir nurodykite vietą į šį atsisiųstą failą. Kai baigsime, visi būsime pasiruošę programuoti. Nors klaviatūrai naudoti naudojome biblioteką, turime paminėti keletą detalių (parodyta žemiau) apie „Arduino“klaviatūrą. Kintamasis ROWS ir COLS nurodys, kiek eilučių ir stulpelių turi mūsų klaviatūra, o klavišų schema rodo, kokia tvarka klavišai yra klaviatūroje. Klaviatūra, kurią aš naudoju šiame projekte, atrodo taip, kaip ir toliau, raktų žemėlapyje. Toliau mes paminėjome, prie kurių kaiščių klaviatūra prijungta naudojant kintamąjį masyvą rowPins ir colPins.const baitas ROWS = 4; // Keturios eilutės baitas COLS = 4; // Trys stulpeliai // Apibrėžkite „Keymapchar“raktus [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; baitų eilutėPins [ROWS] = {0, 1, 2, 3}; // Prijunkite klaviatūrą ROW0, ROW1, ROW2 ir ROW3 prie šių „Arduino“kaiščių. Baitų colPins [COLS] = {4, 5, 6, 7}; // Prijunkite klaviatūrą COL0, COL1 ir COL2 prie šių „Arduino“kaiščių. Kai jau minėjome, kokio tipo klaviatūrą naudojame ir kaip ji prijungta, mes galime sukurti klaviatūrą naudodami šią informaciją naudodami žemiau esančią eilutę. Klaviatūra kpd = Keypad (makeKeymap (), rowPins, colPins, ROWS, COLS); // Sukurkite klaviatūrą Remiantis mūsų schema, apibrėžimai būtų tokie kaip žemiau esančios int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Smeigtukai, prie kurių prijungtas LCD Skystas kristalas LCD (rs, en, d4, d5, d6, d7); // Sukurkite LCD Sąrankos funkcijos viduje mes tiesiog rodome projekto pavadinimą ir tada einame į ciklo ciklą, kuriame yra pagrindinis projektas. Iš esmės turime patikrinti, ar klaviatūroje kažkas įvedamas, jei įvedėte, turime atpažinti kas įvedama, o paskui „=“paspaudus konvertuoti į kintamąjį, turime apskaičiuoti rezultatą ir galiausiai jį parodyti LCD ekrane. Būtent tai ir daroma ciklo funkcijos viduje, kaip parodyta žemiau keykey = kpd.getKey (); // išsaugoti nuspaustą klavišo reikšmę charif (raktas! = NO_KEY) DetectButtons (); if (rezultatas == tiesa) CalculateResult (); DisplayResult (); Kas vyksta kiekvienos funkcijos viduje, paaiškinama naudojant komentarų eilutes, eikite per visą žemiau esantį kodą, suplakite jį, kad suprastumėte, kaip jis iš tikrųjų veikia. Jei turite kokių nors abejonių dėl konkrečios eilutės, nedvejodami naudokite komentarų skiltį arba forumus.

4 žingsnis:

5 žingsnis: „Arduino“skaičiuoklės veikimas

„Arduino“skaičiuoklės veikimas
„Arduino“skaičiuoklės veikimas

Prijunkite pagal schemą ir įkelkite žemiau esantį kodą. Jei rodoma klaida, įsitikinkite, kad pridėjote biblioteką pagal aukščiau pateiktas instrukcijas. Taip pat galite išbandyti modeliavimą, kad patikrintumėte, ar problema susijusi su jūsų aparatine įranga. Jei viskas bus padaryta taip, kaip turėtų būti, tada jūsų aparatinė įranga atrodys maždaug taip, kai LCD ekrane rodomas šis „Arduino“skaičiuotuvas, veikiantis naudojant 4x4 klaviatūrą Kadangi čia naudojama klaviatūra neturi tinkamų ženklų, maniau, kad abėcėlės yra operatoriai išvardytas žemiauKaip klaviatūros simbolis Manoma, kad „A“papildymas (+) „B“atimimas (-) „C“dauginimas (*) „D“skyrius (/) „*“Aiškus (C) „#“Lygus (=) Galite naudokite žymeklį, kad užrašytumėte, ką kiekvienas mygtukas iš tikrųjų reiškia. Tai padarę, galite tiesiogiai pradėti naudoti skaičiuotuvą. Įveskite skaičių ir pasirodys antroje eilutėje, paspauskite operandą ir įveskite antrąjį skaičių, galiausiai paspauskite klavišą „#“, kad gautumėte rezultatą. Taip pat galite pabandyti sukurti šį jutikliniu ekranu pagrįstą „Arduino“skaičiuotuvą.

6 žingsnis: kodas

/ * * „Arduino“klaviatūros skaičiuoklės programa */#include // LCD antraštės failas iš https://www.arduino.cc/en/Reference/LiquidCrystal#include // Klaviatūros antraštės failas iš https://github.com/ Chrisas-A/klaviatūros baitas ROWS = 4; // Keturios eilutės baitas COLS = 4; // Trys stulpeliai // Apibrėžkite „Keymapchar“raktus [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; baitų eilutėPins [ROWS] = {0, 1, 2, 3}; // Prijunkite klaviatūrą ROW0, ROW1, ROW2 ir ROW3 prie šių „Arduino“kaiščių. Baitų colPins [COLS] = {4, 5, 6, 7}; // Prijunkite klaviatūrą COL0, COL1 ir COL2 prie šių „Arduino“kaiščių. Klaviatūra kpd = Klaviatūra (makeKeymap (klavišai), rowPins, colPins, ROWS, COLS); // Sukurkite „Keypadconst“int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Smeigtukai, prie kurių prijungtas LCD Skystas kristalas LCD (rs, en, d4, d5, d6, d7); ilgas skaičius1, skaičius2, skaičius; char raktas, veiksmas; loginis rezultatas = klaidinga; void setup () {lcd.begin (16, 2); // Mes naudojame 16*2 LCD ekraną lcd.print ("pasidaryk pats" skaičiuotuvas); // Rodyti įvadinį pranešimą lcd.setCursor (0, 1); // nustatykite žymeklį į 0 stulpelį, 1 eilutė lcd.print ("-CircuitDigest"); // Rodyti intro pranešimo uždelsimą (2000); // Palaukite, kol ekrane bus rodoma informacija lcd.clear (); // Tada išvalykite} void loop () {key = kpd.getKey (); // išsaugoti nuspaustą klavišo reikšmę charif (raktas! = NO_KEY) DetectButtons (); if (rezultatas == tiesa) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Tada išvalykite, jei (klavišas == '*') // Jei atšaukimo mygtukas paspaudžiamas {Serial.println ("Button Cancel"); Skaičius = skaičius1 = skaičius2 = 0; rezultatas = klaidingas;} if (raktas == '1') // Jei paspaustas 1 mygtukas {Serial.println ("1 mygtukas"); jei (Skaičius == 0) Skaičius = 1; else Skaičius = (Skaičius*10) + 1; // Paspaudžiamas du kartus} if (key == '4') // Jei paspaudžiamas 4 mygtukas {Serial.println ("4 mygtukas"); jei (Skaičius == 0) Skaičius = 4; else Skaičius = (Skaičius*10) + 4; // Paspaudžiamas du kartus} if (key == '7') // Jei paspaudžiamas 7 mygtukas {Serial.println ("7 mygtukas"); jei (Skaičius == 0) Skaičius = 7; else Skaičius = (Skaičius*10) + 7; // Paspaudžiamas du kartus} if (key == '0') {Serial.println ("Button 0"); // Mygtukas 0 paspaudžiamas, jei (Skaičius == 0) Skaičius = 0; else Skaičius = (Skaičius*10) + 0; // Paspaudžiamas du kartus}, jei (klavišas == '2') // 2 mygtukas paspaudžiamas {Serial.println ("2 mygtukas"); jei (Skaičius == 0) Skaičius = 2; else Skaičius = (Skaičius*10) + 2; // Paspaudžiamas du kartus} if (key == '5') {Serial.println ("5 mygtukas"); jei (skaičius == 0) skaičius = 5; else Skaičius = (Skaičius*10) + 5; // Paspaudžiamas du kartus} if (key == '8') {Serial.println ("8 mygtukas"); jei (Skaičius == 0) Skaičius = 8; else Skaičius = (Skaičius*10) + 8; // Paspaudžiamas du kartus} if (key == '#') {Serial.println ("Button Equal"); Num2 = skaičius; rezultatas = tiesa; } if (raktas == '3') {Serial.println ("3 mygtukas"); jei (Skaičius == 0) Skaičius = 3; else Skaičius = (Skaičius*10) + 3; // Paspaudžiamas du kartus} if (key == '6') {Serial.println ("6 mygtukas"); jei (Skaičius == 0) Skaičius = 6; else Skaičius = (Skaičius*10) + 6; // Paspaudžiamas du kartus} if (key == '9') {Serial.println ("Button 9"); jei (skaičius == 0) skaičius = 9; else Skaičius = (Skaičius*10) + 9; // Paspaudžiamas du kartus} if (klavišas == 'A' || klavišas == 'B' || klavišas == 'C' || klavišas == 'D') // Mygtukai 4 stulpelyje {Num1 = skaičius; Skaičius = 0; if (raktas == 'A') {Serial.println ("Papildymas"); action = '+';} if (raktas == 'B') {Serial.println ("Atimtis"); veiksmas = '-'; } if (raktas == 'C') {Serial.println ("Daugyba"); action = '*';} if (raktas == 'D') {Serial.println ("Devesion"); action = '/';} uždelsimas (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (veiksmas == '-') Skaičius = Num1-Num2; if (veiksmas == '*') Skaičius = Num1*Num2; jei (veiksmas == '/') Skaičius = Num1/Num2; } negalioja DisplayResult () {lcd.setCursor (0, 0); // nustatykite žymeklį į 0 stulpelį, 1 eilutė lcd.print (Num1); lcd.print (veiksmas); lcd.print (Num2); if (rezultatas == tiesa) {lcd.print ("="); lcd.print (skaičius);} // Rodyti rezultatą lcd.setCursor (0, 1); // nustatykite žymeklį į 0 stulpelį, 1 eilutė lcd.print (skaičius); // Rodyti rezultatą}

Rekomenduojamas: