Benutzer-Werkzeuge

Webseiten-Werkzeuge


hello_mbot_blockierung

Dies ist eine alte Version des Dokuments!


Blockierend vs. Nichtblockierende Mehoden

Blockierende Methoden halten die Programmausführung an, bis sie vollständig abgeschlossen sind – während dieser Zeit werden keine anderen Aufgaben bearbeitet. Nicht blockierende Methoden hingegen ermöglichen es, mehrere Prozesse quasi gleichzeitig auszuführen, da sie den Ablauf nicht vollständig unterbrechen, sondern Aufgaben asynchron abarbeiten, beispielsweise durch zeitgesteuerte Überprüfungen.

Blockierende vs. Nicht-blockierende Methoden

Methode Beschreibung Vorteile Nachteile
Blockierend Unterbricht die Programmausführung, bis eine Aufgabe abgeschlossen ist. Beispiel: delay(). - Einfach zu schreiben und zu verstehen Keine parallelen Abläufe möglich
- Verzögerte Reaktion auf Eingaben
Nicht-blockierend Führt Aufgaben parallel aus, indem Zeitabläufe gesteuert werden, ohne den Code zu unterbrechen. Beispiel: millis(). - Mehrere Prozesse gleichzeitig möglich
- Schnelle Reaktionszeit
Etwas komplexer in der Umsetzung

Problemstellung: Blockierende vs. Nicht-blockierende Steuerung

Ein mBot soll vorwärts fahren und gleichzeitig eine LED blinken lassen. Zusätzlich soll er anhalten, wenn er ein Hindernis erkennt (unter 15 cm Abstand).

Blockierende Umsetzung

In einer blockierenden Umsetzung wird delay() zum Blinken verwendet. Während der Wartezeit kann der mBot keine neuen Sensordaten auslesen. Dadurch kann er erst nach Ablauf der Verzögerung auf ein Hindernis reagieren, was zu einem verspäteten Anhalten führt.

Nicht-blockierende Umsetzung

In einer nicht-blockierenden Umsetzung wird die LED mit millis() gesteuert. Dadurch kann der mBot kontinuierlich Sensordaten auslesen und sofort stoppen, wenn er ein Hindernis erkennt, während die LED unabhängig weiterblinkt.

Vergleich und Vorteile der nicht-blockierenden Methode

  • Schnellere Reaktionszeit: Der Sensor wird ohne Unterbrechung geprüft.
  • Parallele Abläufe: Der mBot kann gleichzeitig fahren, blinken und auf Hindernisse reagieren.
  • Effizienter Code: Keine Verzögerung durch blockierende Wartezeiten.

Ziel: Die nicht-blockierende Variante ermöglicht eine bessere Steuerung des mBots, da sie Sensorabfragen und Motorsteuerung kontinuierlich ausführt.

hello_mbot_blockierung.1739651125.txt.gz · Zuletzt geändert: 2025/02/15 20:25 von torsten.roehl