Eine Warteschleife unterbrechen

Liebe Community, ich habe folgendes Problem:
ich möchte den Calliope in unterschiedliche Zustände versetzen, in denen ein Pin aktviert wird. In den jeweiligen Zuständen laufen Prozesse, die zeitverzögert beginnen. Nun soll die Warteschleife per Tastendruck unterbrochen werden können, so dass ein anderer Zustand erreicht werden kann.

Was könnte ich tun, damit die Warteschleife verlassen werden kann?

LG alex

Hallo alex,

du kannst im Open Roberta Lab eine Schleife unterbrechen, indem du zunächst in den Experten Modus wechselst ( :star: 2 oben links ) und dann in der „Kontrolle“ Kategorie in die Unterkategorie „Schleife“ gehst und daraus den Block „Schleife abbrechen“ in deine Schleife ziehst.

Wenn du den „Warte bis“ Block verwendest, kannst du auf dem „Warte bis“ Block links auf das Plus klicken, um eine weitere Abbruchbedingung für das Warten anzugeben. (Zum Beispiel den Tastebdruck)

Wenn zu für die Zeitverzögerung den „Warte ms“ Block verwendest musst du diesen jedoch noch in einen „Warte bis“ Block in Kombination mit dem „Zeitgeber“ in der Kategorie „Sensoren“ umformen.
grafik
Beim Zurücksetzen des Zeitgebers musst du aber darauf achten, dass du den Zeitgeber nicht gleichzeitig schon für etwas anderes verwendest.

Viele Grüße,
Philipp

2 Like

vielen Dank für die schnelle Hilfe, leider fehlt die grafik, die mir weiterhelfen könnte.
ich bin noch nicht ganz durch…
Gerade sieht das programm wie folgt aus, aber der calliope geht immer in TasteA=2
und ich kann die zweite Schleife nicht mehr verlassen…

LG alex

Hallo Alex,
das sieht nach logischen Problemen aus. Du schreibst von mehreren Schleifen aber dein Programm hat nur eine einzige Schleife die auch permanent durchlaufen wird und keine „Warteschleife“ ist (so wie es Philipp beschreibt). In der der Schleife sind Verzweigungen welche auch bei jedem Durchlauf abgearbeitet werden.
Mein Tipp: Starte dein Programm in der Simulation von OpenRoberta Lab (rechts der Reiter [Sim]). Es gibt da jetzt ganz neu auch einen Debug Modus. Du kannst dir z.B. während das Programm läuft mit dem Button unten rechts im Simulator (X) die Werte der Variablen anzeigen lassen und du siehst genau welche Befehle gerade ausgeführt werden. Auch kannst du dein Programm Schritt für Schritt ausführen.
Ein Timer (Zeitgeber) sollte, wie Philipp schreibt, auch initialisiert werden, denn er läuft irgendwann über und beginnt vorne. Dann kommen bei Subtraktionen oder Additionen nicht die Ergebnisse, die man sich vorstellt.
Wenn du weitere Fragen hast und Hilfe benötigst immer gerne schreiben.

viele Grüße und viel Erfolg!

Hubert

1 Like