Braitenberg Lösung: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Wechseln zu: Navigation, Suche
Zeile 2: Zeile 2:
 
Für dieses Beispiel sind folgende Ideen wichtig:
 
Für dieses Beispiel sind folgende Ideen wichtig:
 
* Was sind [[Ereignisse]] und welche gibt es beim micro:bit?
 
* Was sind [[Ereignisse]] und welche gibt es beim micro:bit?
* Wie funktionieren [[Alternativen|Abfragen]] und wie können dort Vergleiche verwendet werden?
+
* Wie funktionieren [[Bedingte_Anweisungen|Abfragen]] und wie können damit Vergleiche verwendet werden?
 
* Wie lese ich analoge Werte von Sensoren am BBC micro:bit ein? Welche Wertebereiche haben die Sensoren?
 
* Wie lese ich analoge Werte von Sensoren am BBC micro:bit ein? Welche Wertebereiche haben die Sensoren?
 
* Wie kann ich Motoren mit dem BBC micro:bit ansteuern? Mit welchen minimalen und maximalen Geschwindigkeiten kann ich die Motoren betreiben?
 
* Wie kann ich Motoren mit dem BBC micro:bit ansteuern? Mit welchen minimalen und maximalen Geschwindigkeiten kann ich die Motoren betreiben?

Version vom 18. Januar 2022, 15:39 Uhr

Grundsätzliche Überlegungen

Für dieses Beispiel sind folgende Ideen wichtig:

  • Was sind Ereignisse und welche gibt es beim micro:bit?
  • Wie funktionieren Abfragen und wie können damit Vergleiche verwendet werden?
  • Wie lese ich analoge Werte von Sensoren am BBC micro:bit ein? Welche Wertebereiche haben die Sensoren?
  • Wie kann ich Motoren mit dem BBC micro:bit ansteuern? Mit welchen minimalen und maximalen Geschwindigkeiten kann ich die Motoren betreiben?

Tipps und Tricks

Beim Starten des Programms, was müssen wir alles festlegen?
Denke immer daran: Sicherheit geht vor - alle Variablen initialisieren, d.h. auf einen vernünftigen Startwert setzen und - vor allem bei Robotern - einmal alle Motoren ausschalten. Hinweis
Wie können wir nun das Starten und Stoppen des Roboters mit den Tasten A und B bewerkstelligen?
Wenn wir in der Hauptschleife "Dauerhaft" immer prüfen ob eine bestimmte Variable gesetzt ist, bevor wir echte Geschwindigkeiten an die Motoren ausgeben, müssen wir nur beim Drücken von A oder B diese Variable auf die richtigen Werte setzen.
Wenn das Programm läuft, muss nur noch die Lichtstärke dauerhaft abgefragt, umgerechnet und an die Motoren ausgegeben werden.
Das ist etwas trickreich und kann nacheinander oder in einer einzigen Anweisung gemacht werden. Nacheinander heißt das zB
  • Speichere den Wert des rechten Sensoren, den du von Pin 1 einliest (oder wo auch immer der Sensor verbunden ist!) in die Variable für den rechten Sensor
  • Rechne den Wert auf den prinzipiell richtigen Bereich um. Hinweis
  • Prüfe ob der Wert in einem gültigen Bereich ist um damit den Motor anzusteuern. Hinweis
  • Setze die Motorgeschwindigkeit des richtigen (je nach gewünschtem Verhalten) Motors auf diesen Wert, wenn er fahren soll.
Das sieht dann alles nacheinander zB so aus: Lösung
Mache das gleiche dann für den linken Sensor nochmal!

Komplettlösungen

Beim Starten des Programms, was müssen wir alles festlegen?
Eine mögliche Lösung für den Start? Lösung
Wie können wir nun das Starten und Stoppen des Roboters mit den Tasten A und B bewerkstelligen?
Eigenlich muss ja nur die entsprechende Variable gesetzt werden ... Lösung
Wenn das Programm läuft, muss nur noch die Lichtstärke dauerhaft abgefragt, umgerechnet und an die Motoren ausgegeben werden.

Lichtfolger

Das sieht im einfachsten Fall für einen Roboter der auf das Licht zufährt so aus: Lösung

Lichtflüchter

Und für einen Roboter der vor dem Licht flüchtet so: Lösung
Vielleicht sollte bei dem Lichtflüchter dann auch ein anderes Symbol am Bildschirm ausgegeben werden, damit man die Modelle leichter unterscheiden kann, wie zB Lösung