Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
LCD.init();
LCD.backlight();
LCD.setCursor(0, 0);
LCD.print("RechnerV1");
delay(1500);
LCD.clear();
LCD.setCursor(0, 0);
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
// Wenn eine Zahl oder ein Dezimalpunkt gedrückt wird
if (isdigit(key) || key == '.') {
if (zahlEingabe) {
zahl1 = (zahl1 * 10) + (key - '0');
} else {
zahl2 = (zahl2 * 10) + (key - '0');
}
LCD.print(key);
}
// Wenn ein Rechenzeichen gedrückt wird
else if (key == '+' || key == '-' || key == '*' || key == '/') {
rzeichen = key;
zahlEingabe = false; // Wechselt zur Eingabe der zweiten Zahl
LCD.print(" ");
LCD.print(key);
LCD.print(" ");
}
// Wenn "=" gedrückt wird, berechne das Ergebnis
else if (key == '=') {
switch (rzeichen) {
case '+': ergebnis = zahl1 + zahl2; break;
case '-': ergebnis = zahl1 - zahl2; break;
case '*': ergebnis = zahl1 * zahl2; break;
case '/':
if (zahl2 != 0)
ergebnis = zahl1 / zahl2;
else {
LCD.clear();
LCD.print("Error: Div/0");
delay(2000);
resetValues();
return;
}
break;
}
LCD.setCursor(0, 1);
LCD.print("= ");
LCD.print(ergebnis);
Serial.print("Ergebnis: ");
Serial.println(ergebnis);
delay(2000); // Kurze Pause zur Anzeige des Ergebnisses
resetValues();
}
}
}
// Funktion zum Zurücksetzen der Variablen und LCD-Anzeige
void resetValues() {
zahl1 = 0;
zahl2 = 0;
ergebnis = 0;
rzeichen = '\0';
zahlEingabe = true;
LCD.clear();
LCD.setCursor(0, 0);
}