Arduino-rekenmachine
Componenten en benodigdheden
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Over dit project
Aan het einde van dit project weet je hoe je een 16x2 LCD en toetsenbord met Arduino moet gebruiken en hoe gemakkelijk het is om voor hen te programmeren met behulp van de direct beschikbare bibliotheken. U zult ook begrijpen hoe u uw Arduino programmeert om een bepaalde taak uit te voeren.
Benodigde materialen:
- Arduino Uno (elke versie werkt)
- 16×2 LCD-scherm
- 4×4 toetsenbord
- 9V batterij
- Broodplank en verbindingsdraden
D0
1e pin van het toetsenbord
D1
2e pin van het toetsenbord
D2
3e pin van het toetsenbord
D3
4e pin van het toetsenbord
D4
5e pin van het toetsenbord
D5
6e pin van het toetsenbord
D6
7e pin van het toetsenbord
D7
8e pin van het toetsenbord
D8
Registreer selecteer pin van LCD (pin 4)
D9
Pin van LCD inschakelen (pin 6)
D10
Gegevens pin 4 (pin 11)
D11
Gegevens pin 4 (pin 11)
D12
Gegevens pin 4 (pin 11)
D13
Gegevens pin 4 (pin 11)
+5V
Verbonden met Vdd-pin van LCD (pin 2)
Grond
Verbonden met Vss, Vee en RW pin van LCD (pin 1, 3 en 5)
Sommige Arduino-kaarten kunnen een fout vertonen tijdens het uploaden van het programma als er iets is aangesloten op pin 0 en pin1, dus als je iets ervaart, verwijder dan gewoon het toetsenbord tijdens het uploaden van het programma.
Zodra uw verbindingen tot stand zijn gebracht, ziet uw hardware er ongeveer zo uit als hieronder
Code
- Naamloos bestand
Naamloos bestandArduino
* * Arduino Keypad-calculatorprogramma */#include//Header-bestand voor LCD van https://www.arduino.cc/en/Reference/LiquidCrystal#include //Header bestand voor toetsenbord van https://github.com/Chris--A/Keypadconst byte ROWS =4; // Vier rijenconstbyte COLS =4; // Drie kolommen// Definieer de Keymapchar-sleutels [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. Toetsenbord kpd =Toetsenbord (makeKeymap (sleutels), rowPins, colPins, RIJEN, 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 getal1, getal2, getal; char-toets, actie; booleaans resultaat =onwaar; void 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 op het display om 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; resultaat=false;} if (key =='1') //Als knop 1 wordt ingedrukt {Serial.println ("Knop 1"); if (Getal==0) Getal=1; anders Getal =(Getal*10) + 1; //Twee keer ingedrukt } if (key =='4') //If Button 4 is ingedrukt {Serial.println ("Button 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; //Twee keer ingedrukt } if (key =='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 (sleutel =='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}
Schema's
Productieproces
- Deegrol
- Bowlingspeld
- Arduino Keyboard Exploit Demo (HID) en preventie
- Atmel AT89-serie programmeren via Arduino
- Arduino Spybot
- PPM-signaal van de RC-ontvanger lezen met Arduino
- FlickMote
- Zelfgemaakte tv B-Gone
- Hoofdklok
- Arduino + LED's + MIDI Keyboard + MuseScore =Piano Tutor
- 25 kHz 4-pins PWM-ventilatorregeling met Arduino Uno