Innholdsfortegnelse:

Arduino kalkulator: 6 trinn
Arduino kalkulator: 6 trinn

Video: Arduino kalkulator: 6 trinn

Video: Arduino kalkulator: 6 trinn
Video: How to make calculator using arduino #shorts 2024, November
Anonim
Arduino kalkulator
Arduino kalkulator

Programmering er alltid morsomt, og Arduino er en fantastisk plattform hvis du bare har begynt med innebygd programmering. I denne opplæringen skal vi bygge vår egen kalkulator med Arduino. Verdiene kan sendes inn via et tastatur (4 × 4 tastatur) og resultatet kan vises på en LCD-skjerm (16 × 2 Dot-matrise). Denne kalkulatoren kan utføre enkle operasjoner som addisjon, subtraksjon, multiplikasjon og divisjon med hele tall. Men når du forstår konseptet, kan du implementere til og med vitenskapelige funksjoner med Arduinos innebygde funksjoner. På slutten av dette prosjektet vil du vite hvordan du bruker en 16x2 LCD og tastatur med Arduino og også hvor enkelt det er å programmere for dem ved å bruke lett tilgjengelige biblioteker. Du vil også forstå hvordan du programmerer din Arduino for å utføre en bestemt oppgave.

Trinn 1: Ting som kreves

Arduino Uno (hvilken som helst versjon vil fungere) 16 × 2 LCD -skjerm 4 × 4 tastatur 9V batteri Brødbrett og tilkoblingskabler

Trinn 2: Kretsdiagram

Kretsdiagram
Kretsdiagram

Trinn 3: Arduino Calculator Program

Det komplette Arduino -programmet for dette prosjektet er gitt på slutten av dette prosjektet. Koden er delt inn i små meningsfulle biter og forklart nedenfor. Som tidligere fortalt, skal vi koble til en LCD og et tastatur med Arduino ved å bruke biblioteker. Så la oss legge dem til vår Arduino IDE først. Biblioteket for LCD er allerede inkludert i Arduino som standard, så vi trenger ikke bekymre deg for det. For tastaturbibliotek, klikk på lenken for å laste den ned fra Github. Du får en ZIP -fil, og deretter legger du denne lib til Arduino by Sketch -> Inkluder bibliotek -> Legg til. ZIP -fil og peker plasseringen til denne nedlastede filen. Når det er gjort, er vi klare for programmering. Selv om vi har brukt et bibliotek for å bruke et tastatur, må vi nevne noen detaljer (vist nedenfor) om tastaturet til Arduino. Variabelen ROWS og COLS viser hvor mange rader og kolonner tastaturet vårt har, og tastaturet viser rekkefølgen tastene er på tastaturet. Tastaturet som jeg bruker i dette prosjektet ser slik ut nedenfor til nøkkelkartet representerer også det samme. Videre nedenfor har vi nevnt hvilke pinner tastaturet er koblet til ved hjelp av variabel array rowPins og colPins.const byte ROWS = 4; // Fire rader, konstant byte COLS = 4; // Tre kolonner // Definer Keymapchar -tastene [RADER] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Koble tastaturet ROW0, ROW1, ROW2 og ROW3 til disse Arduino -pinnene. Byte colPins [COLS] = {4, 5, 6, 7}; // Koble tastaturet COL0, COL1 og COL2 til disse Arduino -pinnene. Når vi har nevnt hvilken type tastatur vi bruker og hvordan det er tilkoblet, kan vi lage tastaturet ved hjelp av disse detaljene ved hjelp av linjen under Tastatur kpd = Tastatur (makeKeymap (taster), rowPins, colPins, ROWS, COLS); // Lag tastaturet På samme måte må vi også fortelle hvilke pins på Arduino LCD -en er koblet til. I følge kretsdiagrammet vårt vil definisjonene være som underkonst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pinner som LCD er koblet til LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // opprett LCD -skjermen Innen oppsettsfunksjonen viser vi bare navnet på prosjektet og fortsetter til loop mens hovedprosjektet ligger. I utgangspunktet må vi sjekke om noe skrives på tastaturet, hvis det skrives inn må vi kjenne igjen det som skrives inn og deretter konvertere det til en variabel når “=” trykkes, må vi beregne resultatet og deretter vise det til slutt på LCD -skjermen. Dette er akkurat det som er gjort inne i sløyfefunksjonen som vist nedenforkey = kpd.getKey (); // lagring av trykket nøkkelverdi i et charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); Det som skjer inne i hver funksjon forklares ved hjelp av kommentarlinjene, gå gjennom hele koden nedenfor, fikle rundt med den for å forstå hvordan den faktisk fungerer. Hvis du er i tvil om en bestemt linje, kan du bruke kommentarfeltet eller forumet.

Trinn 4:

Trinn 5: Arbeid med Arduino Calculator

Arbeid med Arduino -kalkulator
Arbeid med Arduino -kalkulator

Gjør tilkoblingene i henhold til kretsdiagrammet og last opp koden nedenfor. Hvis det viser feil, må du kontrollere at du har lagt til biblioteket i henhold til instruksjonene ovenfor. Du kan også prøve simuleringen for å sjekke om problemet er med maskinvaren din. Hvis alt er gjort som det skal være, så vil maskinvaren din se slik ut nedenfor med LCD -skjermen som viser denne Arduino -kalkulatoren med 4x4 -tastatur i bruk Siden tastaturet som brukes her ikke har riktige markeringer på det, har jeg antatt at alfabetene er operatører som nedenfor bruk en markør for å skrive over hva hver knapp faktisk representerer. Med det gjort kan du begynne å bruke kalkulatoren direkte. Skriv inn nummeret og vil vises på den andre linjen, trykk på operanden og skriv det andre nummeret til slutt, trykk på "#" -tasten for å få resultatet. Du kan også prøve å bygge denne berøringsskjermbaserte Arduino -kalkulatoren.

Trinn 6: Kode

/ * * Arduino tastaturkalkulator Program */#inkluderer // Topptekstfil for LCD fra https://www.arduino.cc/en/Reference/LiquidCrystal#include // Topptekstfil for tastatur fra https://github.com/ Chris-A/Tastaturkonst byte RADER = 4; // Fire rader, konstant byte COLS = 4; // Tre kolonner // Definer Keymapchar -tastene [RADER] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Koble tastaturet ROW0, ROW1, ROW2 og ROW3 til disse Arduino -pinnene. Byte colPins [COLS] = {4, 5, 6, 7}; // Koble tastaturet COL0, COL1 og COL2 til disse Arduino -pinnene. Tastatur kpd = Tastatur (makeKeymap (nøkler), rowPins, colPins, ROWS, COLS); // Lag tastaturkonsten int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pinner som LCD er koblet til LiquidCrystal lcd (rs, en, d4, d5, d6, d7); lang Num1, Num2, Number; røyke nøkkel, handling; boolsk resultat = usant; ugyldig oppsett () {lcd.begin (16, 2); // Vi bruker en 16*2 LCD -skjerm lcd.print ("DIY kalkulator"); // Vis en introduksjonsmelding lcd.setCursor (0, 1); // sett markøren til kolonne 0, linje 1 lcd.print ("-CircuitDigest"); // Vis en introduksjonsforsinkelse (2000); // Vent til skjermen viser info lcd.clear (); // Rengjør den deretter} void loop () {key = kpd.getKey (); // lagring av trykket nøkkelverdi i et charif (key! = NO_KEY) DetectButtons (); if (result == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Rengjør den deretter hvis (key == '*') // Hvis Avbryt -knappen trykkes på {Serial.println ("Knappavbryt"); Tall = Num1 = Num2 = 0; result = false;} if (key == '1') // Hvis du trykker på knapp 1 {Serial.println ("Button 1"); hvis (tall == 0) tall = 1; annet Nummer = (Antall*10) + 1; // Trykk to ganger} hvis (tast == '4') // Hvis knapp 4 trykkes på {Serial.println ("knapp 4"); hvis (tall == 0) tall = 4; annet tall = (tall*10) + 4; // Trykk to ganger} hvis (tast == '7') // Hvis knapp 7 trykkes på {Serial.println ("Knapp 7"); hvis (tall == 0) tall = 7; annet Nummer = (Antall*10) + 7; // Trykket to ganger} hvis (key == '0') {Serial.println ("Knapp 0"); // Knapp 0 trykkes hvis (tall == 0) tall = 0; annet tall = (tall*10) + 0; // Trykt to ganger} hvis (key == '2') // Knapp 2 trykkes {Serial.println ("Knapp 2"); hvis (tall == 0) tall = 2; annet Nummer = (Antall*10) + 2; // Trykket to ganger} if (key == '5') {Serial.println ("Knapp 5"); hvis (tall == 0) tall = 5; annet Nummer = (Antall*10) + 5; // Trykket to ganger} hvis (key == '8') {Serial.println ("Knapp 8"); hvis (tall == 0) tall = 8; annet tall = (tall*10) + 8; // Trykket to ganger} if (key == '#') {Serial.println ("Button Equal"); Num2 = Antall; resultat = sant; } if (key == '3') {Serial.println ("Knapp 3"); hvis (tall == 0) tall = 3; annet Nummer = (Antall*10) + 3; // Trykket to ganger} hvis (key == '6') {Serial.println ("Knapp 6"); hvis (tall == 0) tall = 6; annet Nummer = (Antall*10) + 6; // Trykket to ganger} if (key == '9') {Serial.println ("Knapp 9"); hvis (tall == 0) tall = 9; annet tall = (tall*10) + 9; // Trykket to ganger} hvis (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Oppdager knapper i kolonne 4 {Num1 = Number; Antall = 0; if (key == 'A') {Serial.println ("tillegg"); action = '+';} if (key == 'B') {Serial.println ("Subtraksjon"); action = '-'; } if (key == 'C') {Serial.println ("multiplikasjon"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); action = '/';} forsinkelse (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') Number = Num1-Num2; if (action == '*') Number = Num1*Num2; if (action == '/') Number = Num1/Num2; } ugyldig DisplayResult () {lcd.setCursor (0, 0); // sett markøren til kolonne 0, linje 1 lcd.print (Num1); lcd.print (handling); lcd.print (Num2); hvis (resultat == true) {lcd.print ("="); lcd.print (Number);} // Vis resultatet lcd.setCursor (0, 1); // sett markøren til kolonne 0, linje 1 lcd.print (tall); // Vis resultatet}

Anbefalt: