Sadržaj:

Arduino kalkulator: 6 koraka
Arduino kalkulator: 6 koraka

Video: Arduino kalkulator: 6 koraka

Video: Arduino kalkulator: 6 koraka
Video: Amazing arduino project 2024, Novembar
Anonim
Arduino kalkulator
Arduino kalkulator

Programiranje je uvijek zabavno, a Arduino je divna platforma ako tek započinjete s ugrađenim programiranjem. U ovom vodiču napravit ćemo vlastiti kalkulator s Arduinom. Vrijednosti se mogu poslati putem tastature (4 × 4 tastature), a rezultat se može vidjeti na LCD ekranu (16 × 2 matrična tačka). Ovaj kalkulator može izvesti jednostavne operacije poput zbrajanja, oduzimanja, množenja i dijeljenja s cijelim brojevima. Ali kad shvatite koncept, možete implementirati čak i naučne funkcije s ugrađenim funkcijama u Arduinu. Na kraju ovog projekta znat ćete kako koristiti 16x2 LCD i tipkovnicu s Arduinom, a također i kako ih je lako programirati pomoću spremnika dostupne biblioteke. Također ćete razumjeti kako programirati svoj Arduino za izvršavanje određenog zadatka.

Korak 1: Potrebne stvari

Arduino Uno (bilo koja verzija će raditi) 16 × 2 LCD ekran 4 × 4 tastatura 9V baterijaMedica i spojne žice

Korak 2: Dijagram kola

Dijagram kola
Dijagram kola

Korak 3: Arduino kalkulator program

Cjeloviti Arduino program za ovaj projekt dan je na kraju ovog projekta. Kôd je podijeljen na male smislene dijelove i objašnjen u nastavku. Kao što je ranije rečeno, povezat ćemo LCD i tipkovnicu s Arduinom pomoću biblioteka. Pa ih prvo dodajmo u naš Arduino IDE. Biblioteka za LCD već je zadano uključena u vaš Arduino pa se ne moramo brinuti oko toga. Za biblioteku tastature kliknite na vezu da biste je preuzeli sa Github -a. Dobit ćete ZIP datoteku, a zatim dodajte ovaj lib u Arduino pomoću Sketch -> Uključi biblioteku -> Dodaj. ZIP datoteku i usmjerite lokaciju na ovu preuzetu datoteku. Kad završimo, spremni smo za programiranje. Iako smo koristili biblioteku za korištenje tastature, moramo spomenuti nekoliko detalja (prikazanih u nastavku) o tastaturi na Arduinu. Promenljive ROWS i COLS će reći koliko redova i kolona ima naša tastatura, a karta tastera prikazuje redosled kojim su tasteri prisutni na tastaturi. Tastatura koju koristim u ovom projektu izgleda ovako dolje, a karta ključeva također predstavlja istu. Dalje smo dolje spomenuli na koje pinove je tastatura povezana pomoću promenljivog niza rowPins i colPins.const bajt ROWS = 4; // Četiri reda byconst byte COLS = 4; // Tri kolone // Definiranje ključeva tipkovnice [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 tastaturu ROW0, ROW1, ROW2 i ROW3 sa ovim Arduino pins.byte colPins [COLS] = {4, 5, 6, 7}; // Povežite tipkovnicu COL0, COL1 i COL2 na ove Arduino pinove. Nakon što smo spomenuli koju tipkovnicu koristimo i kako je spojena, možemo kreirati tipkovnicu koristeći te detalje koristeći donju liniju Tipkovnica kpd = Tipkovnica (makeKeymap (tipke), rowPins, colPins, ROWS, COLS); // Kreirajte tastaturuSlično tome, moramo reći i na koje je pinove Arduina spojen LCD. Prema našem dijagramu kola definicije bi bile sljedeće: const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Igle na koje je LCD povezanLiquidCrystal lcd (rs, en, d4, d5, d6, d7); // kreiranje LCD -a Unutar funkcije postavljanja samo prikazujemo naziv projekta, a zatim nastavljamo na while petlju gdje se nalazi glavni projekt. U osnovi, moramo provjeriti radi li se nešto na tipkovnici, ako je otkucano, moramo prepoznati ono što se otkucava i zatim konvertuje u promenljivu kada se pritisne “=” moramo da izračunamo rezultat i da ga na kraju prikažemo na LCD -u. To je upravo ono što se radi unutar funkcije petlje kao što je prikazano ispod key = kpd.getKey (); // spremanje pritisnute vrijednosti ključa u charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Ono što se događa unutar svake funkcije objašnjeno je pomoću redaka komentara, prođite kroz donji kôd u nastavku, petljajte po njemu da biste razumjeli kako on zapravo radi. Ako sumnjate u određenu liniju, slobodno upotrijebite odjeljak komentara ili forume.

Korak 4:

Korak 5: Rad Arduino kalkulatora

Rad Arduino kalkulatora
Rad Arduino kalkulatora

Povežite se prema dijagramu kola i učitajte donji kod. Ako se prikaže greška, provjerite jeste li dodali biblioteku prema gore navedenim uputama. Također možete pokušati simulacijom provjeriti je li problem u vašem hardveru. Ako se sve učini kako bi trebalo biti, tada će vaš hardver izgledati otprilike ovako u nastavku s LCD -om koji prikazuje ovaj Arduino kalkulator koristeći 4x4 tastaturu u akciji Budući da ovdje korištena tipkovnica nema odgovarajuće oznake, pretpostavio sam da su abecede operatori kao dolje naveden Znak na tastaturi Pretpostavlja se da je sabiranje “A” (+) “B” Oduzimanje (-) “C” Množenje (*) “D” Podjela (/) “*” Jasno (C) “#” Jednako (=) Možete upotrijebite marker da napišete šta svako dugme zapravo predstavlja. Kada to učinite, možete direktno početi koristiti kalkulator. Ukucajte broj i pojavit će se u drugom retku, pritisnite operand i upišite svoj drugi broj, a zatim pritisnite tipku "#" da biste dobili rezultat. Također možete pokušati napraviti ovaj Arduino kalkulator zasnovan na ekranu osjetljivom na dodir.

Korak 6: Kodirajte

/ * * Program kalkulatora Arduino tastature */#include // Datoteka zaglavlja za LCD sa https://www.arduino.cc/en/Reference/LiquidCrystal#include // Datoteka zaglavlja za tastaturu sa https://github.com/ Chris-A/Keypadconst byte ROWS = 4; // Četiri reda byconst byte COLS = 4; // Tri kolone // Definiranje ključeva tipkovnice [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 tastaturu ROW0, ROW1, ROW2 i ROW3 sa ovim Arduino pins.byte colPins [COLS] = {4, 5, 6, 7}; // Povežite tipkovnicu COL0, COL1 i COL2 s ovim Arduino pinovima. Tipkovnica kpd = Tipkovnica (makeKeymap (ključevi), rowPins, colPins, ROWS, COLS); // Kreiramo Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Igle na koje je LCD povezanLiquidCrystal lcd (rs, en, d4, d5, d6, d7); long Num1, Num2, Broj; char ključ, akcija; boolean result = false; void setup () {lcd.begin (16, 2); // Koristimo LCD ekran veličine 16*2 lcd.print ("uradi sam kalkulator"); // Prikaz uvodne poruke lcd.setCursor (0, 1); // postavite kursor na stupac 0, red 1 lcd.print ("-CircuitDigest"); // Prikaz kašnjenja uvodne poruke (2000); // Sačekajte da se na ekranu prikaže info lcd.clear (); // Zatim ga očistimo} void loop () {key = kpd.getKey (); // spremanje pritisnute vrijednosti ključa u charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Zatim ga očistite if (key == '*') // Ako je pritisnuto dugme Cancel {Serial.println ("Button Cancel"); Broj = Num1 = Num2 = 0; result = false;} if (key == '1') // Ako se pritisne dugme 1 {Serial.println ("dugme 1"); if (Broj == 0) Broj = 1; else Number = (Broj*10) + 1; // Dvaput pritisnuto} if (key == '4') // Ako je pritisnuto dugme 4 {Serial.println ("Button 4"); if (Broj == 0) Broj = 4; else Number = (Broj*10) + 4; // dvaput pritisnuto} if (key == '7') // Ako je pritisnuto dugme 7 {Serial.println ("dugme 7"); if (Broj == 0) Broj = 7; else Number = (Broj*10) + 7; // Dvaput pritisnuto} if (key == '0') {Serial.println ("Button 0"); // Tipka 0 je pritisnuta ako (Broj == 0) Broj = 0; else Number = (Broj*10) + 0; // Dvaput pritisnuto} if (key == '2') // Pritisnite dugme 2 {Serial.println ("Dugme 2"); if (Broj == 0) Broj = 2; else Number = (Broj*10) + 2; // Dvaput pritisnuto} if (key == '5') {Serial.println ("Button 5"); if (Broj == 0) Broj = 5; else Number = (Broj*10) + 5; // dvaput pritisnuto} if (key == '8') {Serial.println ("Button 8"); if (Broj == 0) Broj = 8; else Number = (Broj*10) + 8; // Dvaput pritisnuto} if (key == '#') {Serial.println ("Button Equal"); Num2 = Broj; rezultat = istina; } if (key == '3') {Serial.println ("Dugme 3"); if (Broj == 0) Broj = 3; else Number = (Broj*10) + 3; // dvaput pritisnuto} if (key == '6') {Serial.println ("Button 6"); if (Broj == 0) Broj = 6; else Number = (Broj*10) + 6; // Dvaput pritisnuto} if (key == '9') {Serial.println ("Button 9"); if (Broj == 0) Broj = 9; else Number = (Broj*10) + 9; // dvaput pritisnut} if (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Otkrivanje dugmadi u stupcu 4 {Num1 = Number; Broj = 0; if (key == 'A') {Serial.println ("Dodatak"); action = '+';} if (key == 'B') {Serial.println ("Oduzimanje"); akcija = '-'; } if (key == 'C') {Serial.println ("Množenje"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} kašnjenje (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (akcija == '-') Broj = Num1-Num2; if (akcija == '*') Broj = Num1*Num2; if (akcija == '/') Broj = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // postavite kursor na stupac 0, red 1 lcd.print (Num1); lcd.print (akcija); lcd.print (Num2); if (rezultat == tačno) {lcd.print ("="); lcd.print (Number);} // Prikaz rezultata lcd.setCursor (0, 1); // postavite kursor na stupac 0, red 1 lcd.print (Broj); // Prikaz rezultata}

Preporučuje se: