Warten bis Taste A gedrückt (gelöst)

Hallo zusammen,
ich verwende in verschiedenen Programmen mehrfach hintereinander den Block „Warten bis Taste A gedrückt“, um den User entscheiden zu lassen, wann die nächste Anzeige auf der LED-Matrix erfolgen soll.
Das funktioniert einwandfrei, wenn ich nur „Zeige Text/Zeichen“ verwende, bei „Zeige Bild“ wird der Wartebefehl einfach ignoriert, außer es steht vor dem ersten Warteblock.
Hier ein Mini-Programm zur Demonstration des für mich unlogischen Verhaltens.

grafik

Wenn ich die Reihenfolge der Anzeige von Bild und Zeichen tausche, funktioniert das Programm wie erwartet.

Ich könnte auch noch beliebig viele weitere „Zeige Text“-Blöcke (plus Warten) hinzufügen, sie würden ebenfalls alle korrekt angezeigt, selbst wenn das Bild irgendwo in der Mitte steht.

Woher kommt das Problem beim Bild???

Hallo Naila,

das „Zeige Bild Herz“ geht einfach so schnell, dass der nächste Taste - Warte - Block immer noch „wahr“ liefert.

(„Zeige Bild“ braucht weniger Zeit als „Zeige Text“)

Entschärfen lässt sich das bestimmt durch ein „Warte 200 ms“ oder „Warte bis gib gedrückt Taste A = falsch“ unmittelbar nach dem ersten Warten auf die Taste A.

Probier mal ob das funktioniert.

Gruß Raik

Hallo Raik,
vielen vielen Dank für deine Antwort.
Die Lösung mit „Warte bis gib … = falsch“ hatte zwar ich auch schon erfolgreich probiert.

Aber ich wollte verstehen, weshalb das Problem nur bei Bildern auftritt. Und dazu hast du mir mit dem Hinweis, dass das Bild zu schnell da ist und auch mit dem alternativen Lösungsvorschlag, einfach 200 ms zu warten, tatsächlich die Erklärung geliefert.

Trotzdem bleibt eine Restfrage: Wenn ich statt „Zeige Text“ die Option „Zeige Zeichen“ wähle und nur ein einziges Zeichen anzeigen lasse, müsste das meiner Logik nach genauso schnell gehen wie die Anzeige eines Bildes (auf der LED-Matrix passiert eigentlich genau das Gleiche). Weißt du, ob der „Zeige Text/Zeichen“-Block grundsätzlich langsamer arbeitet als der „Zeige Bild“-Block?

Gruß und noch mal danke
Naila

Hallo Naila,

ZeigeZeichen und ZeigeText gehen über „ManagedString“ in der Laufzeitumgebung, Bilder werden als „MicrobitImage“ behandelt. Siehe dazu auch der Quelltext rechts. Vermutlich liegt das daran, dass die Stringfunktionen einfach ein wenig länger laufen.

Vielleicht ist es eine gute Idee, nach Verwendung von „Warten bis Taste gedrückt“ immer „Warten bis Taste nicht mehr gedrückt“ oder eine kleine Pause zu machen, damit nix Unvorhergesehenes passiert.

Ist halt nur ein Microcontroller, unser kleiner Calliope, und kein PC mit Betriebssysstem und Tastaturpuffer, in dem der Tastendruck nach Abholen einer Taste auch gleich verschwindet :wink:

Gruß Raik

2 „Gefällt mir“