Arduino-Rechner
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Über dieses Projekt
Am Ende dieses Projekts werden Sie wissen, wie man ein 16x2 LCD und eine Tastatur mit Arduino verwendet und wie einfach es ist, sie mit den leicht verfügbaren Bibliotheken zu programmieren. Sie werden auch verstehen, wie Sie Ihren Arduino für die Ausführung einer bestimmten Aufgabe programmieren.
Benötigte Materialien:
- Arduino Uno (Jede Version funktioniert)
- 16×2-LCD-Display
- 4×4-Tastatur
- 9-V-Batterie
- Breadboard und Verbindungskabel
D0
1. Pin der Tastatur
D1
2. Pin der Tastatur
D2
3. Pin der Tastatur
D3
4. Pin der Tastatur
D4
5. Pin der Tastatur
D5
6. Pin der Tastatur
D6
7. Pin der Tastatur
D7
8. Pin der Tastatur
D8
Auswahl des LCD-Pins registrieren (Pin 4)
D9
Enable-Pin des LCD (Pin 6)
D10
Daten-Pin 4 (Pin 11)
D11
Daten-Pin 4 (Pin 11)
D12
Daten-Pin 4 (Pin 11)
D13
Daten-Pin 4 (Pin 11)
+5V
Verbunden mit Vdd-Pin des LCD (Pin 2)
Boden
Verbunden mit Vss-, Vee- und RW-Pin des LCD (Pin 1, 3 und 5)
Einige Arduino-Boards können beim Hochladen des Programms einen Fehler anzeigen, wenn etwas mit Pin 0 und Pin 1 verbunden ist. Wenn Sie also irgendwelche feststellen, entfernen Sie einfach die Tastatur während des Hochladens des Programms.
Sobald Ihre Verbindungen hergestellt sind, sieht Ihre Hardware wie folgt aus
Code
- Unbenannte Datei
Unbenannte DateiArduino
* * Arduino Keypad-Rechner-Programm */#include//Header-Datei für LCD von https://www.arduino.cc/en/Reference/LiquidCrystal#include //Header Datei für Keypad von https://github.com/Chris--A/Keypadconst byte ROWS =4; // Vier Zeilenconst Byte COLS =4; // Drei Spalten// Definiere die Keymapchar-Schlüssel[ROWS][COLS] ={ {'7','8','9','D'}, {'4','5','6',' C'}, {'1','2','3','B'}, {'*','0','#','A'}};byte rowPins[ROWS] ={ 0, 1, 2, 3 }; // Tastatur ROW0, ROW1, ROW2 und ROW3 mit diesen Arduino-Pins verbinden.byte colPins[COLS] ={ 4, 5, 6, 7 }; // Verbinden Sie die Tastatur COL0, COL1 und COL2 mit diesen Arduino-Pins.Keypad kpd =Keypad (makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Erstellen Sie die Keypadconst int rs =8, en =9, d4 =10, d5 =11, d6 =12, d7 =13; // Pins, an die das LCD angeschlossen istLiquidCrystal lcd (rs, en, d4, d5, d6, d7); lang Zahl1,Zahl2,Zahl; char-Taste,Aktion; boolesches Ergebnis =false; Void setup () {lcd.begin (16, 2); // Wir verwenden ein 16 * 2 LCD-Display lcd.print ("DIY Calculator"); //Eine Intro-Nachricht anzeigen lcd.setCursor(0, 1); // setze den Cursor auf Spalte 0, Zeile 1 lcd.print("-CircuitDigest"); // Anzeige einer Intro-Nachrichtverzögerung (2000); // Warten Sie, bis die Anzeige die Informationen anzeigt lcd.clear(); // Dann säubern}void loop () { key =kpd.getKey (); //Wert der gedrückten Taste in einem charif speichern (key!=NO_KEY)DetectButtons();if (result==true)CalculateResult();DisplayResult(); }void DetectButtons() {lcd.clear(); //Dann reinigen Sie es if (key=='*') //Wenn der Abbrechen-Button gedrückt wird {Serial.println ("Button Cancel"); Zahl=Zahl1=Zahl2=0; result=false;} if (key =='1') //Wenn Taste 1 gedrückt wird {Serial.println ("Taste 1"); if (Zahl==0) Zahl=1; sonst Zahl =(Zahl*10) + 1; //Zweimal gedrückt} if (Taste =='4') //Wenn Taste 4 gedrückt wird {Serial.println ("Taste 4"); if (Zahl==0) Zahl=4; sonst Zahl =(Zahl*10) + 4; //Zweimal gedrückt} if (Taste =='7') //Wenn Taste 7 gedrückt wird {Serial.println ("Taste 7"); if (Zahl==0) Zahl=7; sonst Zahl =(Zahl*10) + 7; // Zweimal gedrückt} if (Taste =='0') {Serial.println ("Button 0"); // Taste 0 wird gedrückt, wenn (Zahl ==0) Zahl =0; sonst Zahl =(Zahl*10) + 0; //Zweimal gedrückt} if (Taste =='2') //Taste 2 wird gedrückt {Serial.println ("Taste 2"); wenn (Zahl==0) Zahl=2; sonst Zahl =(Zahl*10) + 2; // Zweimal gedrückt} if (Taste =='5') {Serial.println ("Button 5"); if (Zahl==0) Zahl=5; sonst Zahl =(Zahl*10) + 5; // Zweimal gedrückt} if (Taste =='8') {Serial.println ("Button 8"); if (Zahl==0) Zahl=8; sonst Zahl =(Zahl*10) + 8; // Zweimal gedrückt} if (key =='#') {Serial.println ("Button Equal"); Zahl2=Zahl; Ergebnis =wahr; } if (key =='3') {Serial.println ("Button 3"); if (Zahl==0) Zahl=3; sonst Zahl =(Zahl*10) + 3; // Zweimal gedrückt} if (Taste =='6') {Serial.println ("Button 6"); if (Zahl==0) Zahl=6; sonst Zahl =(Zahl*10) + 6; // Zweimal gedrückt} if (Taste =='9') {Serial.println ("Button 9"); if (Zahl==0) Zahl=9; sonst Zahl =(Zahl*10) + 9; //Zweimal gedrückt} if (Taste =='A' || Taste =='B' || Taste =='C' || Taste =='D') //Erkennen von Schaltflächen in Spalte 4 { Num1 =Number; Zahl =0; if (key =='A') {Serial.println ("Addition"); action ='+';} if (key =='B') {Serial.println ("Subtraktion"); Aktion ='-'; } if (key =='C') {Serial.println ("Multiplikation"); action ='*';} if (key =='D') {Serial.println ("Entwicklung"); Aktion ='/';} Verzögerung(100); } }void CalculateResult(){ if (action=='+') Number =Num1+Num2; if (action=='-') Zahl =Num1-Num2; if (action=='*') Zahl =Num1*Num2; if (action=='/') Zahl =Num1/Num2; } ungültiges DisplayResult () {lcd.setCursor (0, 0); // setze den Cursor auf Spalte 0, Zeile 1 lcd.print(Num1); lcd.print (Aktion); lcd.print (Num2); if (result==true) {lcd.print(" ="); lcd.print(Number);} //Ergebnis anzeigen lcd.setCursor(0, 1); // setze den Cursor auf Spalte 0, Zeile 1 lcd.print(Number); //Ergebnis anzeigen}
Schaltpläne
Herstellungsprozess