Hvordan laver man Arduino-baseret lommeregner?

At lave projekter ved hjælp af Arduino Uno som et mikrocontrollerkort er det virkelig sjovt, hvis du arbejder på indlejrede projekter. Hvis du vil lave en simpel lommeregner, der er i stand til at udføre alle de grundlæggende aritmetiske operationer som addition, subtraktion, multiplikation og division, kan du gøre det lige nu, hvis du har know-how med Arduino-kortet. Så i dette projekt skal vi bruge en Arduino Uno til at lave en simpel lommeregner. Vi integrerer et 4 × 4 tastatur til at sende input og et 16 × 2 LCD for at se output fra vores operationer.

Så som vi nu kender det grundlæggende abstrakt af vores projekt, at hvad vi ønsker at opnå i sidste ende, lad os gå videre og begynde at samle yderligere information for at begynde at arbejde på dette projekt.

Hvordan laver man en simpel lommeregner på Arduino?

Trin 1: Samling af komponenterne

Før et projekt startes, er det første trin at oprette en komplet liste over alle de komponenter, der skal bruges i projektet. Dette er en perfekt tilgang, fordi det sparer meget tid og forhindrer os i at sidde fast midt i projektet. Så en komplet liste over alle de komponenter, der er let tilgængelige på markedet, er angivet nedenfor:

Trin 2: Arbejde

Da vi nu har alle de komponenter, som vi skal bruge i dette projekt, lad os begynde at arbejde på dette projekt. Vi skal bruge en Arduino Uno som mikrokontrolkort. En kode vil blive skrevet og brændt på dette tavle, som fortæller tavlen, hvilke operationer der skal udføres, og hvordan. Et 4 × 4 tastatur bruges til at indtaste de numeriske data, der skal beregnes i lommeregneren. Mikrocontrolleren udfører alle de aritmetiske operationer og sender derefter output til 16 × 2 LCD.

Før du tilslutter hardwaren, er det bedre at simulere og teste koden og kredsløbsforbindelserne på computersoftware. Vi bruger Proteustil dette formål. Efter at have testet kredsløbet og bekræftet, at det fungerer helt fint på softwaren, bevæger vi os mod hardware.

Trin 3: Simulering af kredsløbet

Før vi implementerer dette projekt på hardware, simulerer vi det først på Proteus for at kontrollere, om koden fungerer fint eller ej. Hvis du ikke har arbejdet med Proteus før, er der intet at bekymre sig om. For at simulere kredsløbet på software skal du gennemgå følgende trin.

  1. Hvis du ikke allerede har denne software installeret på din computer, skal du klikke her for at downloade den.
  2. Når softwaren er installeret, skal du åbne softwaren og oprette et nyt projekt ved at klikke på ISIS knap.
  3. Proteus har oprindeligt ikke et Arduino-bibliotek. Vi bliver nødt til at medtage det. Arduino-biblioteket til proteus er vedhæftet sammen med koden i nedenstående link. Kopier filerne og indsæt dem i C: \ ProgramData \ Labcenter Electronics \ Proteus 8 Professional \ BIBLIOTEK.
  4. Et nyt skema er lige åbnet. Klik på Pfor at åbne komponentmenuen.
  5. En boks vises med en søgefelt i øverste venstre hjørne. Søg i den komponent, du har brug for i projektet.
  6. Når du har valgt alle komponenterne, vil du se en komplet liste i venstre side af skærmen.
  7. Lav et kredsløbsdiagram som vist nedenfor.
  8. Åbn nu Arduino-filen, der er angivet nedenfor. Klik på i menuen Skitse Eksport kompileret binær. Dette genererer en .hex-fil, der vil blive brugt til simulation af Arduino i Proteus.
  9. Dette er de to filer, der genereres. Vi bruger den første i vores simuleringer.
  10. Når HEX-filen er genereret, skal du åbne proteus og dobbeltklikke på mikrocontrolkortet. Et felt vises for at redigere komponenten. Upload hex-filen der.

    Da koden uploades her med succes, kan du teste lommeregneren ved at udføre en aritmetisk handling og bekræfte resultaterne.

Trin 4: Samling af kredsløbet

Da kredsløbet er simuleret, og koden fungerer helt fint på det. Lad os gå et skridt foran og samle alle komponenterne sammen på Veroboard at lave et slutprodukt. Gå gennem følgende trin for at oprette alle forbindelser i kredsløbet.

  1. Der er i alt 8 ben på 4 × 4 tastaturet med navnet A, B, C, D, 1, 2, 3 og 4. Sørg for at forbinde A, B. C og D pin til pin0, pin1, pin2 og pin3 på Arduino Uno-kortet og pin 1, 2, 3 og 4 pins på tastaturet til henholdsvis pin4, pin5, pin6 og pin7 på Arduino Uno-kortet.
  2. Tilslut nu D4, D5, D6 og D7 pin på 16 × 2 LCD til henholdsvis pin10, pin11, pin12 og pin13 på Arduino-kortet.
  3. Tilslut nu RE og Epin på LCD til henholdsvis pin8 og pin9 på Arduino-kortet.
  4. Kort den VSS, VEE og RW pin på LCD-skærmen og tilslut dem til jorden af ​​Arduino Uno.
  5. Tænd LCD'et ved at tilslutte VDD pin af LCD til 5V af Arduino UNO.

Trin 5: Kom godt i gang med Arduino

Arduino IDE er en software, som du kan skrive, debugge og kompilere en kode, der kører på en Arduino-mikrocontroller. Denne kode vil blive uploadet til mikrocontrolleren gennem denne IDE. Hvis du ikke har nogen tidligere erfaring med denne software, er der intet at bekymre dig om, fordi hele proceduren for at bruge denne software er angivet nedenfor.

  1. Hvis du ikke allerede har softwaren installeret, skal du klikke her for at downloade softwaren.
  2. Tilslut dit Arduino-kort til pc'en, og åbn Kontrolpanel. Klik på Hardware og lyd.Nu åben Enheder og printer og find den port, som dit kort er tilsluttet. Denne port er forskellig på forskellige computere.
  3. Åbn nu Arduino IDE. Fra værktøjer skal du indstille Arduino-kortet til Arduino / Genuino UNO.
  4. Fra den samme værktøjsmenu skal du indstille portnummeret. Dette portnummer skal være nøjagtigt det samme som det portnummer, der blev observeret før i kontrolpanelet.
  5. For at bruge 4 × 4 tastatur og 16 × 2 LCD med Arduino IDE skal vi nu importere specielle biblioteker, der giver os mulighed for at brænde kode på Arduino Uno og bruge den. disse to biblioteker er vedhæftet i nedenstående link. For at inkludere biblioteket, gå til Skitse> Inkluder bibliotek> Tilføj ZIP-bibliotek. En boks vises. Find ZIP-mappen på din computer, og klik på OK for at inkludere mapperne. Dette bibliotek er vedhæftet sammen med koden i nedenstående link.
  6. Download nedenstående kode og kopier den til din IDE. Klik på uploadknappen for at uploade koden.

Klik her for at downloade koden.

Trin 6: Forståelse af koden

Koden er meget godt kommenteret. Men stadig, for din lethed, forklares det nedenfor.

1. I starten skrives headerfilerne til at omfatte bibliotekerne, så tastaturet og LCD-skærmen kan grænseflade til Arduino Uno-kortet.

#omfatte  // Inkluder header-fil til LCD # inkluderer  // Inkluder header-fil til tastaturet

2. Derefter erklæres to variabler for at indeholde antallet af rækker og kolonner på tastaturet. Tastaturet fortæller os om rækkefølgen af ​​taster, der findes på tastaturet.

const byte RÆGER = 4; // Fire rækker af tastaturet const byte COLS = 4; // Tre kolonner på tastaturet // Definer nøgletaster til Keymap [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', ' 6 ',' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {' * ',' 0 ',' # ',' A '}};

3. Derefter specificeres det, hvilken række og kolonne på tastaturet der er forbundet til hvilken pin på Arduino. Når det hele er gjort, kan et tastatur oprettes ved at kortlægge alle dens ben.

byte rowPins [ROWS] = {0, 1, 2, 3}; // Forbind tastaturet ROW0, ROW1, ROW2 og ROW3 til disse Arduino-pins henholdsvis 0,1,2,3. byte colPins [COLS] = {4, 5, 6, 7}; // Forbind tastaturet COL0, COL1 og COL2 til henholdsvis disse Arduino-ben 4,5,67. Tastatur kpd = Tastatur (makeKeymap (nøgler), rowPins, colPins, ROWS, COLS); // Opret tastaturet

4. Derefter fortæller vi det, hvilke stifter på LCD-skærmen, der er forbundet til hvilke stifter i Arduino.

const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pins der er forbundet LCD med LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Opret LCD-skærmen

5. Derefter initialiseres nogle variabler for at holde beregningsværdierne og udføre operationer i løbet af løbetiden.

lang Num1, Num2, Antal; char nøgle, handling; boolsk resultat = falsk;

6. ugyldig opsætning () er en funktion, der kun kører en gang, når kredsløbet er tændt. I denne funktion erklærer vi, hvilken pin på Arduino-kortet, der skal bruges til at tage input, og hvilken der vil blive brugt til at sende output. Baudhastighed er også indstillet i denne funktion, som dybest set er kommunikationshastigheden i bits pr. Sekund.

ugyldig opsætning () {Serial.begin (9600); lcd.begin (16, 2); // Vi bruger et 16 * 2 LCD-display lcd.print ("Lommeregner"); // Vis en introduktionsmeddelelse lcd.setCursor (0, 1); // sæt markøren til kolonne 0, linje 1 forsinkelse (1000); // Vent i 1 sekund lcd.clear (); // ryd LCD-skærmen}

7. CalculateResult ()er en funktion, der bruges til at registrere det tegn, der trykkes på tastaturet. på basis af et skilt, der trykkes, bestemmer det, hvilken aritmetisk operation, der skal udføres.

ugyldigt CalculateResult () {hvis (handling == '+') // hvis + tegnet trykkes på Number = Num1 + Num2; // tilføj begge tal, hvis (handling == '-') // hvis - tegnet trykkes på Number = Num1-Num2; // fratræk begge tal, hvis (handling == '*') // hvis * tegnet trykkes på Number = Num1 * Num2; // multiplicer begge tal, hvis (handling == '/') // hvis / tegn trykkes på Number = Num1 / Num2; // del begge numre}

8. DisplayResult ()er en funktion, der bruges til at vise resultatet på LCD'et. Først og fremmest indstiller den markøren til startpositionen og udskriver det første tal. Derefter viser den den logiske operator og derefter det andet nummer. Efter udskrivning af “=” - tegnet vises svaret på LCD'et.

ugyldigt DisplayResult () {lcd.setCursor (0, 0); // sæt markøren til kolonne 0, linje 1 lcd.print (Num1); // udskriv det første nummer på skærmen lcd.print (handling); // udskriv det tegn, der trykkes på skærmen lcd.print (Num2); // udskriv det andet nummer på skærmen, hvis (resultat == sandt) // Vis resultatet {lcd.print ("="); // udskriv = tegnet på skærmen lcd.print (Number); // udskriv svaret på skærmen}}

9. DetectButtons ()er en funktion, der bruges til at registrere, hvilken knap der trykkes på. det registrerer også, om der trykkes på knappen to gange. Denne funktion returnerer et tal, der trykkes på tastaturet.

ugyldige DetectButtons () {lcd.clear (); // Rens det derefter, hvis (tast == '*') // Hvis der trykkes på Annuller-knap {Serial.println ("Knap Annuller"); // udskriv en kommentar Antal = Num1 = Num2 = 0; resultat = falsk; } hvis (nøgle == '1') // Hvis der trykkes på knap 1 {Serial.println ("Knap 1"); hvis (Number == 0) Number = 1; ellers Number = (Number * 10) + 1; // Trykt to gange} hvis (tast == '4') // Hvis der trykkes på knap 4 {Serial.println ("Knap 4"); hvis (Number == 0) Number = 4; ellers Number = (Number * 10) + 4; // Trykt to gange} hvis (tast == '7') // Hvis der trykkes på knap 7 {Serial.println ("Knap 7"); hvis (Number == 0) Number = 7; ellers Tal = (Nummer * 10) + 7; // Trykt to gange} hvis (tast == '0') // Hvis der trykkes på knap 0 {Serial.println ("Knap 0"); hvis (Number == 0) Number = 0; ellers Tal = (Nummer * 10) + 0; // Trykt to gange} hvis (tast == '2') // Knap 2 trykkes på {Serial.println ("Knap 2"); hvis (Number == 0) Number = 2; ellers Number = (Number * 10) + 2; // Trykt to gange} hvis (tast == '5') // Knap 5 trykkes på {Serial.println ("Knap 5"); hvis (Number == 0) Number = 5; ellers Tal = (Nummer * 10) + 5; // Trykt to gange} hvis (tast == '8') // Knap 8 trykkes {Serial.println ("Knap 8"); hvis (Number == 0) Number = 8; ellers Tal = (Nummer * 10) + 8; // Trykt to gange}, hvis (tast == '#') // Knap # trykkes på {Serial.println ("Knap lig"); Num2 = antal; resultat = sandt; } hvis (tast == '3') // Knap 3 trykkes på {Serial.println ("Knap 3"); hvis (Number == 0) Number = 3; ellers Number = (Number * 10) + 3; // Tryk to gange}, hvis (tast == '6') // Knap 6 trykkes på {Serial.println ("Knap 6"); hvis (Number == 0) Number = 6; ellers Tal = (Nummer * 10) + 6; // Trykt to gange} hvis (tast == '9') // Knap 09 trykkes på {Serial.println ("Knap 9"); hvis (Number == 0) Number = 9; ellers Number = (Number * 10) + 9; // Trykt to gange} hvis (key == 'A' || key == 'B' || key == 'C' || key == 'D') // Registrering af knapper i kolonne 4 {Num1 = Number; Antal = 0; hvis (nøgle == 'A') {Serial.println ("Tilføjelse"); handling = '+'; } hvis (nøgle == 'B') {Serial.println ("Subtraktion"); handling = '-'; } hvis (nøgle == 'C') {Serial.println ("Multiplikation"); handling = '*'; } hvis (nøgle == 'D') {Serial.println ("Devesion"); handling = '/'; } forsinkelse (100); }}

10. ugyldig sløjfe ()er en funktion, der kører igen og igen i en loop. Denne funktion bruges til at kalde alle de andre funktioner, der skal bruges til at udføre alle handlinger. Disse funktioner er forklaret ovenfor.

ugyldig sløjfe () {nøgle = kpd.getKey (); // lagring af presset nøgleværdi i en char hvis (tast! = NO_KEY) DetectButtons (); // opkaldsfunktion hvis (resultat == sand) CalculateResult (); // opkaldsfunktion DisplayResult (); // opkaldsfunktion}

Trin 7: Test

Nu da vi har tilsluttet alle komponenterne og uploadet koden i mikrocontrolleren, lad os teste lommeregneren, hvis den fungerer fint eller ej. Tryk på en vilkårlig numerisk tast for at teste lommeregneren. Efter det tryk ENog tryk derefter igen på en vilkårlig numerisk tast. Når du har gjort dette, viser LCD'et tilføjelsen af ​​begge numre.

Dette var hele proceduren for at lave og teste en lommeregner ved hjælp af Arduino. Nu kan du nyde at lave din egen Arduino-baserede lommeregner derhjemme.

Facebook Twitter Google Plus Pinterest