Inhoudsopgave:

Arduino-rekenmachine: 6 stappen
Arduino-rekenmachine: 6 stappen

Video: Arduino-rekenmachine: 6 stappen

Video: Arduino-rekenmachine: 6 stappen
Video: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, November
Anonim
Arduino-rekenmachine
Arduino-rekenmachine

Programmeren is altijd leuk en Arduino is een geweldig platform als je net begint met Embedded-programmeren. In deze tutorial zullen we onze eigen rekenmachine bouwen met Arduino. De waarden kunnen worden verzonden via een toetsenbord (4×4 toetsenbord) en het resultaat kan worden bekeken op een LCD-scherm (16×2 Dot-matrix). Deze rekenmachine kan eenvoudige bewerkingen zoals optellen, aftrekken, vermenigvuldigen en delen met hele getallen uitvoeren. Maar als je het concept eenmaal begrijpt, kun je zelfs wetenschappelijke functies implementeren met Arduino's ingebouwde functies. beschikbare bibliotheken. U zult ook begrijpen hoe u uw Arduino programmeert voor het uitvoeren van een bepaalde taak.

Stap 1: Dingen die nodig zijn

Arduino Uno (elke versie werkt)16×2 LCD-scherm4×4 toetsenbord9V batterijBreadboard en aansluitdraden

Stap 2: Schakelschema

Schakelschema
Schakelschema

Stap 3: Arduino-calculatorprogramma

Het volledige Arduino-programma voor dit project wordt aan het einde van dit project gegeven. De code is opgesplitst in kleine, betekenisvolle brokken en wordt hieronder uitgelegd. Zoals eerder verteld, gaan we een LCD en toetsenbord koppelen aan Arduino met behulp van bibliotheken. Dus laten we ze eerst toevoegen aan onze Arduino IDE. De bibliotheek voor LCD is standaard al in uw Arduino opgenomen, dus daar hoeven we ons geen zorgen over te maken. Klik voor de toetsenbordbibliotheek op de link om deze van Github te downloaden. U krijgt een ZIP-bestand en voegt deze lib vervolgens toe aan Arduino via Sketch -> Include Library -> Add. ZIP-bestand en verwijs de locatie naar dit gedownloade bestand. Als we klaar zijn, zijn we helemaal klaar om te programmeren. Hoewel we een bibliotheek hebben gebruikt voor het gebruik van een toetsenbord, moeten we enkele details (hieronder weergegeven) over het toetsenbord naar de Arduino noemen. De variabele ROWS en COLS vertelt hoeveel rijen en kolommen ons toetsenbord heeft en de keymap toont de volgorde waarin de toetsen op het toetsenbord aanwezig zijn. Het toetsenbord dat ik in dit project gebruik, ziet er als volgt uit, de toetsenkaart vertegenwoordigt ook hetzelfde. Verder hieronder hebben we vermeld op welke pinnen het toetsenbord is aangesloten met behulp van de variabele array rowPins en colPins.const byte ROWS = 4; // Vier rijenconst byte COLS = 4; // Drie kolommen// Definieer de Keymapchar-toetsen [ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', ' B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'}};byte rowPins[ROWS] = { 0, 1, 2, 3 };// Sluit toetsenbord ROW0, ROW1, ROW2 en ROW3 aan op deze Arduino-pinnen.byte colPins [COLS] = {4, 5, 6, 7}; // Sluit toetsenbord COL0, COL1 en COL2 aan op deze Arduino-pinnen. Nadat we hebben vermeld welk type toetsenbord we gebruiken en hoe het is aangesloten, kunnen we het toetsenbord maken met behulp van die details met behulp van de onderstaande regel Keypad kpd = Keypad (makeKeymap (keys)), rowPins, colPins, RIJEN, COLS); // Maak het toetsenbord Op dezelfde manier moeten we ook vertellen op welke pinnen van de Arduino het LCD-scherm is aangesloten. Volgens ons schakelschema zouden de definities als volgt zijn: int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pinnen waarop LCD is aangesloten LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // maak het LCD-scherm In de setup-functie geven we alleen de naam van het project weer en gaan we verder met de while-lus waar het hoofdproject ligt. In principe moeten we controleren of er iets op het toetsenbord wordt getypt, als we het typen moeten we het herkennen wat er wordt getypt en converteer het naar een variabele wanneer de "=" wordt ingedrukt, we moeten het resultaat berekenen en het uiteindelijk op het LCD-scherm weergeven. Dit is precies wat er wordt gedaan binnen de lusfunctie zoals hieronder wordt getoondkey = kpd.getKey(); //opslaan van ingedrukte toetswaarde in een charif (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); Wat er binnen elke functie gebeurt, wordt uitgelegd met behulp van de commentaarregels, doorloop de volledige code hieronder, speel ermee om te begrijpen hoe het echt werkt. Als je twijfelt over een specifieke regel, gebruik dan gerust het commentaargedeelte of de forums.

Stap 4:

Stap 5: Werking van Arduino Calculator

Werking van Arduino Calculator
Werking van Arduino Calculator

Maak de aansluitingen volgens het schakelschema en upload de onderstaande code. Als er een fout wordt weergegeven, zorg er dan voor dat u de bibliotheek hebt toegevoegd volgens de bovenstaande instructie. U kunt de simulatie ook proberen om te controleren of het probleem bij uw hardware ligt. Als alles is gedaan zoals het hoort, ziet uw hardware er ongeveer zo uit als hieronder, met het LCD-scherm dat deze Arduino-calculator weergeeft met behulp van het 4x4-toetsenbord in actie. Aangezien het hier gebruikte toetsenbord niet de juiste markeringen heeft, heb ik aangenomen dat de alfabetten operators zijn zoals hieronder vermeld Teken op toetsenbord Verondersteld te zijn “A” Optellen (+) “B” Aftrekken (-) “C” Vermenigvuldigen (*) “D” Delen (/) “*” Wissen (C) “#” Is gelijk aan (=) U kunt gebruik een markering om over elke knop te schrijven. Als dat is gebeurd, kunt u de rekenmachine direct gaan gebruiken. Typ het nummer en het verschijnt op de tweede regel, druk op de operand en typ je tweede nummer en druk tenslotte op de toets "#" om je resultaat te krijgen. U kunt ook proberen deze op touchscreen gebaseerde Arduino-calculator te bouwen.

Stap 6: Coderen

/* * Arduino Keypad-calculatorprogramma */#include //Header-bestand voor LCD van https://www.arduino.cc/en/Reference/LiquidCrystal#include //Header-bestand voor Keypad van https://github.com/ Chris--A/Keypadconst byte RIJEN = 4; // Vier rijenconst byte COLS = 4; // Drie kolommen// Definieer de Keymapchar-toetsen [ROWS][COLS] = { {'7', '8', '9', 'D'}, {'4', '5', '6', ' C'}, {'1', '2', '3', 'B'}, {'*', '0', '#', 'A'}};byte rowPins[ROWS] = { 0, 1, 2, 3 };// Sluit toetsenbord ROW0, ROW1, ROW2 en ROW3 aan op deze Arduino-pinnen.byte colPins [COLS] = {4, 5, 6, 7}; // Sluit toetsenbord COL0, COL1 en COL2 aan op deze Arduino-pinnen. Keypad kpd = Keypad (makeKeymap (keys), rowPins, colPins, ROWS, COLS); // Maak de Keypadconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; //Pinnen waarop LCD is aangesloten LiquidCrystal lcd (rs, en, d4, d5, d6, d7); lang Num1, Num2, Getal; char-toets, actie; boolean resultaat = false; ongeldige setup () { lcd.begin (16, 2); // We gebruiken een 16 * 2 LCD-scherm lcd.print ("DIY Calculator"); // Geef een introbericht weer lcd.setCursor (0, 1); // zet de cursor op kolom 0, regel 1 lcd.print ("-CircuitDigest"); // Geef een vertraging van het introbericht weer (2000); //Wacht tot het scherm info lcd.clear(); // Maak het vervolgens schoon} void loop () {key = kpd.getKey (); //opslaan van ingedrukte toetswaarde in een charif (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); }nietig DetectButtons(){ lcd.clear(); //Maak het dan schoon als (key=='*') //Als de annuleerknop is ingedrukt {Serial.println ("Button Cancel"); Getal=Num1=Num2=0; result=false;} if (key == '1') //If Button 1 is ingedrukt {Serial.println ("Button 1"); if (Getal==0) Getal=1; anders Getal = (Getal*10) + 1; //Twee keer ingedrukt } if (toets == '4') //Als knop 4 wordt ingedrukt {Serial.println ("Knop 4"); if (Getal==0) Getal=4; anders Getal = (Getal*10) + 4; //Twee keer ingedrukt } if (key == '7') //If Button 7 is ingedrukt {Serial.println ("Button 7"); if (Getal==0) Getal=7; anders Getal = (Getal*10) + 7; // Tweemaal ingedrukt } if (key == '0') {Serial.println ("Knop 0"); // Knop 0 wordt ingedrukt als (nummer == 0) nummer = 0; anders Getal = (Getal*10) + 0; // Tweemaal ingedrukt } als (toets == '2') // Knop 2 is ingedrukt {Serial.println ("Knop 2"); if (Getal==0) Getal=2; anders Getal = (Getal*10) + 2; // Tweemaal ingedrukt } if (key == '5') {Serial.println ("Knop 5"); if (Getal==0) Getal=5; anders Getal = (Getal*10) + 5; // Tweemaal ingedrukt } if (key == '8') {Serial.println ("Knop 8"); if (Getal==0) Getal=8; anders Getal = (Getal*10) + 8; // Tweemaal ingedrukt } if (key == '#') {Serial.println ("Button Equal"); Getal2=Nummer; resultaat = waar; } if (key == '3') {Serial.println ("Knop 3"); if (Getal==0) Getal=3; anders Getal = (Getal*10) + 3; // Tweemaal ingedrukt } if (key == '6') {Serial.println ("Knop 6"); if (Getal==0) Getal=6; anders Getal = (Getal*10) + 6; // Tweemaal ingedrukt } if (key == '9') {Serial.println ("Knop 9"); if (Getal==0) Getal=9; anders Getal = (Getal*10) + 9; // Tweemaal ingedrukt } if (toets == 'A' || toets == 'B' || toets == 'C' || toets == 'D') // Knoppen detecteren op kolom 4 { Num1 = nummer; Getal =0; if (key == 'A') {Serial.println ("Toevoeging"); action = '+';} if (key == 'B') {Serial.println ("Aftrekken"); actie = '-'; } if (key == 'C') {Serial.println ("Vermenigvuldiging"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); actie = '/';} vertraging(100); }}ongeldig BerekenResultaat(){ if (action=='+') Getal = Num1+Num2; if (action=='-') Getal = Num1-Num2; if (action=='*') Getal = Num1*Num2; if (action=='/') Getal = Num1/Num2; }void DisplayResult(){ lcd.setCursor(0, 0); // zet de cursor op kolom 0, regel 1 lcd.print (Num1); lcd.print(actie); lcd.afdruk (Num2); if (resultaat==waar) {lcd.print(" ="); lcd.print (Number);} // Geef het resultaat weer lcd.setCursor (0, 1); // zet de cursor op kolom 0, regel 1 lcd.print(Number); // Toon het resultaat}

Aanbevolen: