In diesem Projekt erfahren Sie, wie Sie einen Rechner auf Arduino bauen. Dieser Rechner kann Additionen, Subtraktionen, Multiplikationen und Divisionen durchführen. Dazu verwenden wir ein Tastenfeld zur Eingabe der Zahlen und einen LCD-Bildschirm zur Anzeige der Ergebnisse.
Sehen wir uns nun die für das Projekt benötigten Materialien an:
Ein Arduino Uno-Board
Ein 16×2-LCD-Display
Ein digitales Tastenfeld
Ein 220-Ohm-Widerstand
Überbrückungskabel (ca. 15!)
Um eine Berechnung durchzuführen, müssen Sie zunächst eine Zahl eingeben. Anschließend haben Sie verschiedene Möglichkeiten:
Taste A: Addition
Taste B: Subtraktion
Taste C: Multiplikation
Taste D: Division
Taste #: Ergebnis anzeigen
Taste *: Berechnung zurücksetzen
Wenn Sie eine Berechnung durchführen, die nicht möglich ist, wie beispielsweise eine Division durch 0, werden Sie gewarnt:
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8);
long premier_chiffre = 0;
long second_chiffre = 0;
double calcul_total = 0;
char digicode_modifie;
const byte Lignes = 4;
const byte Colonnes = 4;
char Touches[Lignes][Colonnes] = {
{'1','2','3','+'},
{'4','5','6','-'},
{'7','8','9','*'},
{'C','0','=','/'}
};
byte Ligne_pins[Lignes] = {7,6,5,4}; //connect to the row pinouts of the keypad
byte Colonne_pins[Colonnes] = {3,2,1,0}; //connect to the column pinouts of the keypad
Keypad customKeypad= Keypad( makeKeymap(Touches), Ligne_pins, Colonne_pins, Lignes, Colonnes);
void setup()
{
lcd.begin(16, 2);
for(int i=0;i<=3;i++);
lcd.setCursor(0,0);
lcd.print("Calculatrice");
lcd.setCursor(0,1);
lcd.print("Arduino Factory");
delay(4000);
lcd.clear(); // On efface l'écran LCD
lcd.setCursor(0, 0);
}
void loop()
{
digicode_modifie = customKeypad.getKey();
switch(digicode_modifie)
{
case '0' ... '9':
lcd.setCursor(0,0);
premier_chiffre = premier_chiffre * 10 + (digicode_modifie - '0');
lcd.print(premier_chiffre);
break;
case '+':
premier_chiffre = (calcul_total != 0 ? calcul_total : premier_chiffre);
lcd.setCursor(0,1);
lcd.print("+");
second_chiffre = second_chiffre_nombre();
calcul_total = premier_chiffre + second_chiffre;
lcd.setCursor(0,3);
lcd.print(calcul_total);
premier_chiffre = 0, second_chiffre = 0;
break;
case '-':
premier_chiffre = (calcul_total != 0 ? calcul_total : premier_chiffre);
lcd.setCursor(0,1);
lcd.print("-");
second_chiffre = second_chiffre_nombre();
calcul_total = premier_chiffre - second_chiffre;
lcd.setCursor(0,3);
lcd.print(calcul_total);
premier_chiffre = 0, second_chiffre = 0;
break;
case '*':
premier_chiffre = (calcul_total != 0 ? calcul_total : premier_chiffre);
lcd.setCursor(0,1);
lcd.print("*");
second_chiffre = second_chiffre_nombre();
calcul_total = premier_chiffre * second_chiffre;
lcd.setCursor(0,3);
lcd.print(calcul_total);
premier_chiffre = 0, second_chiffre = 0;
break;
case '/':
premier_chiffre = (calcul_total != 0 ? calcul_total : premier_chiffre);
lcd.setCursor(0,1);
lcd.print("/");
second_chiffre = second_chiffre_nombre();
lcd.setCursor(0,3);
second_chiffre == 0 ? lcd.print("Invalid") : calcul_total = (float)premier_chiffre / (float)second_chiffre;
lcd.print(calcul_total);
premier_chiffre = 0, second_chiffre = 0;
break;
case 'C':
calcul_total = 0;
lcd.clear();
break;
}
}
long second_chiffre_nombre()
{
while( 1 )
{
digicode_modifie = customKeypad.getKey();
if(digicode_modifie >= '0' && digicode_modifie <= '9')
{
second_chiffre = second_chiffre * 10 + (digicode_modifie - '0');
lcd.setCursor(0,2);
lcd.print(second_chiffre);
}
if(digicode_modifie == '=') break;
}
return second_chiffre;
}
Hier ist die Simulation des Projekts auf Tinkercad: