hello_mbot_blockierung
                Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| hello_mbot_blockierung [2025/02/17 10:45] – [Blockierend vs. Nichtblockierende Mehoden] torsten.roehl | hello_mbot_blockierung [2025/10/10 09:52] (aktuell) – torsten.roehl | ||
|---|---|---|---|
| Zeile 5: | Zeile 5: | ||
| // | // | ||
| - | {{ : | + | {{ : | 
| ====== Beispiel ====== | ====== Beispiel ====== | ||
| Zeile 98: | Zeile 98: | ||
| if (distance > limit ) { // freie Fahrt? | if (distance > limit ) { // freie Fahrt? | ||
| - | motor1.run(255); | + | motor1.run(-255); | 
| - | motor2.run(-255); | + | motor2.run(255); | 
| blinken(200); | blinken(200); | ||
| } | } | ||
| Zeile 115: | Zeile 115: | ||
| */ | */ | ||
| void blinken(int interval) { | void blinken(int interval) { | ||
| + | |||
| unsigned long currentMillis = millis(); | unsigned long currentMillis = millis(); | ||
| - | if (currentMillis - previousMillis | + |  | 
| - |  | + |  | 
| - | previousMillis = currentMillis; | + |  | 
| - | ledState = !ledState; | + | |
| - |  | + | // step: .. toggle now! | 
| - | led.setColor(0, | + | firstRun = false; | 
| - | led.setColor(1, | + | previousMillis = currentMillis; | 
| - | } else { | + | ledState = !ledState; | 
| - | led.setColor(0, | + | |
| - | led.setColor(1, | + |  | 
| - | } | + | led.setColor(0, | 
| - | led.show(); | + | led.setColor(1, | 
| + | } else { | ||
| + | led.setColor(0, | ||
| + | led.setColor(1, | ||
| } | } | ||
| + | led.show(); | ||
| } | } | ||
| </ | </ | ||
| == Erklärungen zum Quellcode == | == Erklärungen zum Quellcode == | ||
| - | Die Methode '' | ||
| - | //Zeile 42// prüft, ob das Intervall abgelaufen oder der erste Aufruf ('' | ||
| - | |||
| - | //Zeile 45// wechselt den LED-Zustand, | ||
| - | |||
| - | //Zeile 47–54// setzt die LED auf Rot oder schaltet sie aus, abhängig von '' | ||
| Die Variable '' | Die Variable '' | ||
| Zeile 147: | Zeile 144: | ||
| < | < | ||
| In dieser Version wird das Blinken der LEDs nicht blockierend mit '' | In dieser Version wird das Blinken der LEDs nicht blockierend mit '' | ||
| - | ===== Vor- und Nachteile blockierender und nicht-blockierender Methoden | + | ====== Zusammenfassung ====== | 
| Nicht-blockierende Methoden ermöglichen eine effizientere Steuerung des mBots, da Abläufe parallel ausgeführt werden können. Gleichzeitig sind blockierende Methoden einfacher umzusetzen und sind häufig ausreichend. | Nicht-blockierende Methoden ermöglichen eine effizientere Steuerung des mBots, da Abläufe parallel ausgeführt werden können. Gleichzeitig sind blockierende Methoden einfacher umzusetzen und sind häufig ausreichend. | ||
| - | === Vorteile der nicht-blockierenden Methode === | ||
| - | ✅ **Schnellere Reaktionszeit: | ||
| - | |||
| - | ✅ **Parallele Abläufe:** Der mBot kann gleichzeitig fahren, blinken und Hindernisse erkennen, da keine Aufgabe den Programmfluss blockiert. Dadurch reagiert das System dynamischer auf Veränderungen in der Umgebung. | ||
| - | |||
| - | ✅ **Effizienter Code:** Anstatt auf eine feste Wartezeit zu warten, werden Aufgaben zeitgesteuert verarbeitet. So bleibt das System jederzeit aktiv und reaktionsfähig. | ||
| - | |||
| - | === Vorteile der blockierenden Methode === | ||
| - | ✅ **Einfache Umsetzung: | ||
| - | ✅ **In einfachen Anwendungen ausreichend: | + | ^ '' | 
| + | |✅ **Schnellere Reaktionszeit: | ||
| + | |✅ **Parallele Abläufe:** Der mBot kann gleichzeitig fahren, blinken und Hindernisse erkennen, da keine Aufgabe den Programmfluss blockiert. Dadurch reagiert das System dynamischer auf Veränderungen in der Umgebung. |✅ **In einfachen Anwendungen ausreichend: | ||
| + | |✅ **Effizienter Code:** Anstatt auf eine feste Wartezeit zu warten, werden Aufgaben zeitgesteuert verarbeitet. So bleibt das System jederzeit aktiv und reaktionsfähig. | ||
hello_mbot_blockierung.1739789140.txt.gz · Zuletzt geändert:  von torsten.roehl
                
                