MrSliff:
2. wie kann ich die loop anhalten, um auf eine Dateneingabe zu warten?!
Bsp.:
"Bitte 1. Zahl eingeben:" -> Warten auf eingabe -> Zahl eingegeben -> "Bitte 2.Zahl eingeben" -> Warten auf eingabe -> zahl eingegeben -> berechnung -> je nach wert LED an oder aus
Blockierende Programme sind Quatsch.
Wenn Du so einen Quatsch tatsächlich programmieren möchtest, kannst Du den Controller mit
while (!Serial.available());
in eine enge Warteschleife zwingen, die so lange läuft, bis ein Zeichen im seriellen Eingangspuffer angekommen ist.
Beispielprogramm:
void setup() {
Serial.begin(9600);
}
int intInput()
{
char str[10];
int charcount=0;
memset(str,0,sizeof(str)); // String-Puffer löschen
while (!Serial.available()); // Warten bis 1. Zeichen im Eingangspuffer
delay(100); // Warten auf weitere Zeichen im Eigangspuffer
while (Serial.available() && charcount<9)
{
str[charcount]=Serial.read(); // Zeichen aus Eingangspuffer lesen
charcount++;
}
return atoi(str); // String in Integer-Rückgabewert wandeln
}
void loop() {
Serial.print("Geben Sie Wert1 ein: ");
int wert1=intInput();
Serial.println(wert1);
Serial.print("Geben Sie Wert2 ein: ");
int wert2=intInput();
Serial.println(wert2);
Serial.print("Das Ergebnis Wert1 * Wert2 ist = ");
long wert3=(long)wert1*wert2;
Serial.println(wert3);
Serial.println();
}