void loop() { String GleichZeichen = " = "; lcd.setCursor(Position, 2); // Tastenfeld abfragen Tastenfeld.tick(); while (Tastenfeld.available()) { /* wenn eine Aufgabe ausgegeben wurde LCD löschen, Anzeige neu aufbauen */ if (Rechnung != "") { Rechnung = ""; lcd.clear(); Position = 0; lcd.setCursor(0, 0); lcd.print("Mal-Rechner"); lcd.setCursor(0, 1); lcd.print("--------------------"); lcd.setCursor(0, 2); // char-Array Zeichen leeren for (int i = 0; i < sizeof(Zeichen); i ++) { Zeichen[i] = NULL; } Position = 0; PositionSpalte = 0; } // gedrückte Taste lesen keypadEvent Taste = Tastenfeld.read(); // wenn die Taste losgelassen wurde // Wert abgefragter Taste zu char umwandeln if (Taste.bit.EVENT == KEY_JUST_RELEASED) { // eingegebenes Zeichen an der aktuellen Position speichern Zeichen[Position] = (char)Taste.bit.KEY; // Ton ausgeben tone(LAUTSPRECHER, 1000); delay(50); noTone(LAUTSPRECHER); // Zeichen anzeigen // # soll nicht angezeigt werden if (Taste.bit.KEY != 35) { Serial.print(Zeichen[Position]); lcd.print(Zeichen[Position]); } // nächstes Zeichen -> Position erhöhen Position ++; // Ausgabe LCD eine Position weiter PositionSpalte ++; // # (ASCII-Code = 35) gedrückt → Rechnung ausführen if (Taste.bit.KEY == 35) { // char-Array in String umwandeln Rechnung = String(Zeichen); // letztes Zeichen ist # → muss entfernt werden Rechnung = Rechnung.substring(0, Position - 1); // Position des Malzeichens bestimmen // Zählung beginnt mit 0 int MalZeichen = Rechnung.indexOf('*'); // erster Faktor: von 0 bis zur Position des Malzeichens String FaktorEins = Rechnung.substring(0, MalZeichen); /* zweiter Faktor: von der Position hinter dem Malzeichen bis zum vorletzten Zeichen das letzte Zeichen ist # → soll entfernt werden */ String FaktorZwei = Rechnung.substring(MalZeichen + 1, Rechnung.length()); /* Produkt berechnen damit dürfen die beiden Faktoren nicht größer als 32768 sein long Produkt = FaktorEins.toInt() * FaktorZwei.toInt(); Zahlen nach long umwandeln */ long ErsterFaktor = FaktorEins.toInt(); long ZweiterFaktor = FaktorZwei.toInt(); long Produkt = ErsterFaktor * ZweiterFaktor; // String Rechnung "zusammenbauen" Rechnung = FaktorEins + " * " + FaktorZwei + GleichZeichen + String(Produkt); // Rechnung anzeigen RechnungAusgeben(); } } } }