- Nødvendige materialer:
- Kredsløbsdiagram:
- Arduino-lommeregnerprogram:
- Simulation af Arduino-lommeregner:
- Arbejde med Arduino-lommeregner:
Programmering er altid sjovt, og Arduino er en vidunderlig platform, hvis du lige er kommet i gang med Embedded programmering. I denne vejledning bygger vi vores egen lommeregner med Arduino. Værdierne kan sendes ind via et tastatur (4 × 4 tastatur), og resultatet kan ses på en LCD-skærm (16 × 2 punktmatrix). Denne lommeregner kunne udføre enkle operationer som Addition, Subtraktion, Multiplikation og Division med hele tal. Men når du først har forstået konceptet, kan du implementere selv videnskabelige funktioner med Arduinos indbyggede funktioner.
I slutningen af dette projekt vil du vide, hvordan du bruger et 16x2 LCD og tastatur med Arduino, og også hvor let det er at programmere for dem ved hjælp af de let tilgængelige biblioteker. Du vil også forstå, hvordan du programmerer din Arduino til at udføre en bestemt opgave.
Nødvendige materialer:
- Arduino Uno (En hvilken som helst version fungerer)
- 16 × 2 LCD-skærm
- 4 × 4 tastatur
- 9V batteri
- Brødbræt og tilslutningstråde
Kredsløbsdiagram:
Det komplette kredsløbsdiagram for dette Arduino-lommeregnerprojekt er angivet ovenfor. + 5V og jordforbindelse vist i kredsløbsdiagrammet kan fås fra 5V og jordstift på Arduino. Arduino selv kan drives fra din bærbare computer eller gennem DC-stikket ved hjælp af en 12V adapter eller 9V batteri.
Vi betjener LCD'et i 4-bit tilstand med Arduino, så kun de sidste fire databitar på LCD'et er forbundet til Arduino. Tastaturet har 8 udgangsstifter, som skal forbindes fra stift 0 til stift 7 som vist ovenfor. Du kan bruge følgende forbindelsestabel til at bekræfte din forbindelse med Arduino, du kan også kontrollere 4x4-tastaturgrænseflade med Arduino.
Arduino pin navn: |
Forbundet til: |
D0 |
1 st pin af tastaturet |
D1 |
2 nd pin af tastaturet |
D2 |
3 rd pin af tastaturet |
D3 |
4 th pin af tastaturet |
D4 |
5 th pin af tastaturet |
D5 |
6 th pin af tastaturet |
D6 |
7 th pin af tastaturet |
D7 |
8 th pin af tastaturet |
D8 |
Registrer vælg LCD-stift (pin 4) |
D9 |
Aktivér pin på LCD (pin 6) |
D10 |
Datapin 4 (pin 11) |
D11 |
Datapin 4 (pin 11) |
D12 |
Datapin 4 (pin 11) |
D13 |
Datapin 4 (pin 11) |
+ 5V |
Forbundet til Vdd-stift på LCD (pin 2) |
Jord |
Forbundet til Vss, Vee og RW pin på LCD (pin 1,3 og 5) |
Nogle Arduino-kort viser muligvis en fejl under upload af program, hvis der er noget forbundet med pin 0 og pin1, så hvis du oplever noget, skal du bare fjerne tastaturet, mens du uploader programmet.
Når dine forbindelser er færdige, vil din hardware se sådan ud nedenfor
Arduino-lommeregnerprogram:
Det komplette Arduino-program til dette projekt gives i slutningen af dette projekt. Koden er opdelt i små meningsfulde bidder og forklaret nedenfor.
Som tidligere fortalt skal vi interface et LCD og tastatur med Arduino ved hjælp af biblioteker. Så lad os først tilføje dem til vores Arduino IDE. Biblioteket til LCD er allerede inkluderet i din Arduino som standard, så vi behøver ikke bekymre os om det. For tastaturbibliotek skal du klikke på linket for at downloade det fra Github. Du får en ZIP-fil, og tilføj derefter denne lib til Arduino med Sketch -> Inkluder bibliotek -> Tilføj.ZIP-fil og peg placeringen til denne downloadede fil. Når det er gjort, er vi klar til programmering.
Selvom vi har brugt et bibliotek til brug af et tastatur, skal vi nævne nogle få detaljer (vist nedenfor) om tastaturet til Arduino. Variablen ROWS og COLS fortæller, hvor mange rækker og kolonner vores tastatur har, og keymap viser den rækkefølge, som tasterne findes på tastaturet. Tastaturet, som jeg bruger i dette projekt, ser sådan ud nedenfor på nøglekortet, repræsenterer det samme.
Længere nedenfor har vi nævnt hvilke stifter tastaturet er forbundet ved hjælp af variabelt array rowPins og colPins .
const byte RÆGER = 4; // Fire rækker med byte COLS = 4; // Tre kolonner // Definer Keymap-char-tasterne = {{'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, { '7', '8', '9', 'C'}, {'*', '0', '#', 'D'}}; byte rowPins = {0, 1, 2, 3}; // Tilslut tastaturet ROW0, ROW1, ROW2 og ROW3 til disse Arduino-ben. byte colPins = {4, 5, 6, 7}; // Tilslut tastaturet COL0, COL1 og COL2 til disse Arduino-ben.
Når vi først har nævnt, hvilken type tastatur vi bruger, og hvordan det er tilsluttet, kan vi oprette tastaturet ved hjælp af disse detaljer ved hjælp af nedenstående linje
Tastatur kpd = Tastatur (makeKeymap (nøgler), rowPins, colPins, ROWS, COLS); // Opret tastaturet
På samme måde er vi også nødt til at fortælle, hvilke ben på Arduino LCD'et er forbundet til. Ifølge vores kredsløbsdiagram ville definitionerne være som nedenfor
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Pins, som LCD er tilsluttet LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // opret LCD'et
Inde i setup -funktionen, vi bare vise navnet på projektet, og derefter gå videre til while-løkke, hvor de vigtigste projekt ligger.
Grundlæggende er vi nødt til at kontrollere, om noget bliver skrevet på tastaturet. Hvis der indtastes, skal vi genkende, hvad der skrives, og derefter konvertere det til en variabel, når der trykkes på “=”, vi skal beregne resultatet og derefter endelig vise det på LCD-skærmen. Dette gøres nøjagtigt inden i loop- funktionen som vist nedenfor
nøgle = kpd.getKey (); // lagring af presset nøgleværdi i et tegn, hvis (tast! = NO_KEY) DetectButtons (); hvis (resultat == sand) CalculateResult (); DisplayResult ();
Hvad der sker inde i hver funktion forklares ved hjælp af kommentarlinjerne, gå igennem den komplette kode nedenfor, fikle rundt med det for at forstå, hvordan det rent faktisk fungerer. Hvis du er i tvivl om en bestemt linje, er du velkommen til at bruge kommentarsektionen eller foraene.
Simulation af Arduino-lommeregner:
Vi kan også prøve at simulere projektet ved hjælp af Proteus-software. Proteus har ikke en Arduino-komponent alene, men kan nemt downloades og føjes til biblioteket. Når du har Arduino-komponenten på Proteus, skal du blot tilføje alfanumerisk LCD og tastatur for at oprette forbindelsen som vist i kredsløbsdiagrammet.
Download derefter hex-filen herfra og tilføj den til Arduino ved at dobbeltklikke på kortet i Proteus og peg "programfilen" til denne downloadede hex-fil. Et øjebliksbillede af simuleringen er vist nedenfor, komplet arbejde vises i videoen nedenfor.
Bemærk: Den angivne hex-fil er ikke den samme som originalen til programmet nedenfor. Det er blevet ændret til siden nøglekortet på simulationstastaturet og det faktiske hardwaretastatur er forskelligt.
Arbejde med Arduino-lommeregner:
Foretag forbindelserne som beskrevet i kredsløbsdiagrammet, og upload koden nedenfor. Hvis det viser en fejl, skal du sikre dig, at du har tilføjet biblioteket i henhold til ovenstående instruktion. Du kan også prøve simuleringen for at kontrollere, om problemet er med din hardware. Hvis alt er gjort som det skal være, vil din hardware se sådan ud nedenfor med LCD-skærmen, der viser dette
Da tastaturet, der bruges her, ikke har ordentlige markeringer på det, har jeg antaget, at alfabeterne er operatører som angivet nedenfor
Tegn på tastaturet |
Antages at være |
"EN" |
Tilføjelse (+) |
"B" |
Subtraktion (-) |
"C" |
Multiplikation (*) |
“D” |
Division (/) |
“*” |
Ryd (C) |
“#” |
Lige med (=) |
Du kan bruge en markør til at skrive over, hvad hver knap faktisk repræsenterer.
Når det er gjort, kan du direkte begynde at bruge lommeregneren. Indtaster nummeret og vises på anden linje, tryk på operanden, og skriv dit andet nummer, og tryk til sidst på “#” -tasten for at få dit resultat. Du kan også prøve at bygge denne berøringsskærmbaserede Arduino-lommeregner.