das Programm stoppen und durch Knopfdruck weiter laufen lassen?

Hey ich bin hier neu und hab mal ne Frage, wenn ich mein Programm stoppen möchte also ein delay einbauen möchte wo es nicht nach zeit weiter geht sondern wenn ich einen knöpf drücke, wie geht das??
Ich weiss nicht ob das problem völlig einfach zu lösen ist aber ich habe keine Ideen mehr :frowning:
Das Programm soll am Ende ein "Vokabeltrainer" werden.
bisher habe ich es mit einer while schleife probiert aber irgendwo ist ein Fehler.
habe auch den gesamten code nochmal angehängt da ich in vielen Foren gelesen hab dass man die gesamten codes schicken soll.

PS: Hoffe der code ist nicht zu sehr gefuscht :slight_smile:
Danke im Voraus

Vokabeltrainer.ino (16 KB)

Einen Sketch mit delay zu stoppen ist die schlechteste (dümmste) Lösung.
Das geht sicher eleganter.

Und einen Sketch hier als Bild zu posten, ist ebenfalls eine schlechte Lösung.

Poste den bitte in Code-Tags.

Erstmal danke für die schnelle Antwort. Wie gesagt kenne ich mich hier noch nicht aus ich hoffe ich habe es dieses Mal richtig gemacht.

case 0:
lcd.setCursor(0, 0);
lcd.print("Deutsch:");
lcd.setCursor(0, 1);
lcd.print("einsam");
while(prevbutton1 != button1){
  button1 = digitalRead(button1pin);
while(button1 == LOW){
  button1 = digitalRead(button1pin);
}
}
prevbutton1 = button1;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Englisch:");
lcd.setCursor(0, 1);
lcd.print("lonely");
while(prevbutton1 != button1){
  button1 = digitalRead(button1pin);
while(button1 == LOW){
  button1 = digitalRead(button1pin);
}
}
break;

Naja....fast.
Die Code-Tags fehlen: Vorweg [ code] und anschließend [/ code] setzen, aber ohne die Leerzeichen.

Das kannst du auch noch nachträglich bearbeiten.

p4u1:
Erstmal danke für die schnelle Antwort. Wie gesagt kenne ich mich hier noch nicht aus ich hoffe ich habe es dieses Mal richtig gemacht.

Leider nein. Der Sketch ist auch nicht vollständig.
Klicke mit der rechten Maustaste in der IDE in deinen Sketchtext und wähle 'Für Forum kopieren'
Dann fügst Du das hier ein (Da sind die Codetags dann schon dabei).

Jetzt aber :slight_smile: danke der weg ist vielleicht ein wenig leichter.

case 0:
lcd.setCursor(0, 0);
lcd.print("Deutsch:");
lcd.setCursor(0, 1);
lcd.print("einsam");
while(prevbutton1 != button1){
  button1 = digitalRead(button1pin);
while(button1 == LOW){
  button1 = digitalRead(button1pin);
}
}
prevbutton1 = button1;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Englisch:");
lcd.setCursor(0, 1);
lcd.print("lonely");
while(prevbutton1 != button1){
  button1 = digitalRead(button1pin);
while(button1 == LOW){
  button1 = digitalRead(button1pin);
}
}
break;

Das kann aber doch nicht dein ganzer Sketch sein ?
Und drücke mal ctrl-T in der IDE bevor Du das kopierst. Dann wird der Code ordentlich eingerückt.

Du kannst ja einfach ein Case machen, der nur auf eine Tastatureingabe wartet.
Grüße Uwe

Auf irgendwas wortwörtlich warten ist nicht gut. Besser ist entweder etwas zu tun oder nichts zu tun. Und dann ständig den Taster abfragen

Das Programm soll am Ende ein "Vokabeltrainer" werden.

du machst aber nicht jedes Vokabel-Paar in einem separaten case Abschnitt oder?

Vorschlag:
Gib deine Vokabeln in ein struct,
mach daraus ein Array,
gib die Texte aus dem Array aus.

Das erspart dir viel Tipparbeit und auch die ganzen Code-Duplikate.

Wenn das klappt, verschiebe die ganzen Texte in den Progmem

edit: nur so als Idee

// https://forum.arduino.cc/index.php?topic=707040.0

struct Vokabel {
  const char * deutsch;
  const char * englisch;
};
Vokabel vokabel[] {
  {"Fliege", "fly"},
  {"einsam", "lonely"},
  {"rot", "red"},
  {"blau", "blue"}
};
uint16_t noOfVokabel = 4;

void ausgabe(uint16_t actual)
{
  Serial.print("\nDe: ");
  Serial.println(vokabel[actual].deutsch);
  Serial.print("en: ");
  Serial.println(vokabel[actual].englisch);
}

void run()
{
  uint16_t  zufall = random(noOfVokabel);
  ausgabe(zufall);
  delay(1000);  // dirty delay - bitte selber umbauen
}

void setup() {
  Serial.begin(115200);
  randomSeed(A0);
}

void loop() {
  run();
}

Danke für die vielen antworten. Sowas in der art wollte ich schon am Anfang machen aber ich komm mit array und so nicht klar, deshalb habe ich es gelassen werd mich jetzt aber wieder mal mehr mit dem Thema beschäftigen danke nochmal. :smiley:

Du kannst ja nun selber erahnen, um wie viel größer dein Sketch wird, wenn noch mal 26 Vokabeln hinzukommen und um wie viel das Muster ansteigen wird.

Merke: Immer wenn du die gleiche (ähnliche) Zeile in einem Code schreibst, ist es Zeit das Konzept zu hinterfragen. Wenn man 26 x was hinschreibt, dann sowieso.

Danke werd ich mir merken: