Braitenberg Lösung: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „== Grundsätzliche Überlegungen == Für dieses einführende Beispiel sind folgende Ideen wichtig: * Was sind Ereignisse und welche gibt es beim micro:bit?…“ |
Keine Bearbeitungszusammenfassung |
||
Zeile 9: | Zeile 9: | ||
== Komplettlösungen == | == Komplettlösungen == | ||
; Beim Starten des Programms, was müssen wir alles festlegen? | ; Beim Starten des Programms, was müssen wir alles festlegen? | ||
: Eine mögliche Lösung für den Start? <spoiler text="Lösung"><pre id="pre4"> | : Eine mögliche Lösung für den Start? <spoiler text="Lösung"><pre id="pre4"> | ||
Zeile 30: | Zeile 29: | ||
</pre></spoiler> | </pre></spoiler> | ||
=== Lichtfolger === | |||
; Wenn das Programm läuft, muss nur noch die Lichtstärke dauerhaft abgefragt, umgerechnet und an die Motoren ausgegeben werden. | ; Wenn das Programm läuft, muss nur noch die Lichtstärke dauerhaft abgefragt, umgerechnet und an die Motoren ausgegeben werden. | ||
: Das sieht im einfachsten Fall für einen Roboter der auf das Licht zuführt so aus: <spoiler text="Lösung"><pre id="pre4"> | : Das sieht im einfachsten Fall für einen Roboter der auf das Licht zuführt so aus: <spoiler text="Lösung"><pre id="pre4"> | ||
Zeile 44: | Zeile 44: | ||
}) | }) | ||
</pre></spoiler> | </pre></spoiler> | ||
=== Lichtflüchter === | |||
: Und für einen Roboter der vor dem Licht flüchtet so: <spoiler text="Lösung"><pre id="pre4"> | : Und für einen Roboter der vor dem Licht flüchtet so: <spoiler text="Lösung"><pre id="pre4"> | ||
basic.forever(function () { | basic.forever(function () { |
Version vom 3. Januar 2022, 16:52 Uhr
Grundsätzliche Überlegungen
Für dieses einführende Beispiel sind folgende Ideen wichtig:
- Was sind Ereignisse und welche gibt es beim micro:bit?
- Wie funktionieren Abfragen und wie können dort Vergleiche verwendet werden?
- ...
Tipps und Tricks
Komplettlösungen
- Beim Starten des Programms, was müssen wir alles festlegen?
- Eine mögliche Lösung für den Start? <spoiler text="Lösung">
let SpeedL = 0 let SpeedR = 0 let Go = false kitronik_motor_driver.motorOff(kitronik_motor_driver.Motors.Motor1) kitronik_motor_driver.motorOff(kitronik_motor_driver.Motors.Motor2) basic.showIcon(IconNames.Happy) </spoiler>
- 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 ... <spoiler text="Lösung">
input.onButtonPressed(Button.A, function () { Go = true }) input.onButtonPressed(Button.B, function () { Go = false }) </spoiler>
Lichtfolger
- Wenn das Programm läuft, muss nur noch die Lichtstärke dauerhaft abgefragt, umgerechnet und an die Motoren ausgegeben werden.
- Das sieht im einfachsten Fall für einen Roboter der auf das Licht zuführt so aus: <spoiler text="Lösung">
basic.forever(function () { SpeedR = Math.min(pins.analogReadPin(AnalogPin.P1) / 10, 100) SpeedL = Math.min(pins.analogReadPin(AnalogPin.P2) / 10, 100) if (Go) { kitronik_motor_driver.motorOn(kitronik_motor_driver.Motors.Motor1, kitronik_motor_driver.MotorDirection.Reverse, SpeedR) kitronik_motor_driver.motorOn(kitronik_motor_driver.Motors.Motor2, kitronik_motor_driver.MotorDirection.Reverse, SpeedL) } else { kitronik_motor_driver.motorOff(kitronik_motor_driver.Motors.Motor1) kitronik_motor_driver.motorOff(kitronik_motor_driver.Motors.Motor2) } }) </spoiler>
Lichtflüchter
- Und für einen Roboter der vor dem Licht flüchtet so: <spoiler text="Lösung">
basic.forever(function () {
SpeedL = Math.min(pins.analogReadPin(AnalogPin.P1) / 10, 100) SpeedR = Math.min(pins.analogReadPin(AnalogPin.P2) / 10, 100) if (Go) { kitronik_motor_driver.motorOn(kitronik_motor_driver.Motors.Motor1, kitronik_motor_driver.MotorDirection.Reverse, SpeedR) kitronik_motor_driver.motorOn(kitronik_motor_driver.Motors.Motor2, kitronik_motor_driver.MotorDirection.Reverse, SpeedL) } else { kitronik_motor_driver.motorOff(kitronik_motor_driver.Motors.Motor1) kitronik_motor_driver.motorOff(kitronik_motor_driver.Motors.Motor2) }
})
</spoiler>
- Vielleicht sollte bei dem Lichtflüchter dann auch ein anderes Symbol am Bildschirm ausgegeben werden, damit man die Modelle leichter unterscheiden kann, wie zB <spoiler text="Lösung">
let SpeedL = 0 let SpeedR = 0 let Go = false kitronik_motor_driver.motorOff(kitronik_motor_driver.Motors.Motor1) kitronik_motor_driver.motorOff(kitronik_motor_driver.Motors.Motor2) basic.showIcon(IconNames.Sad)
</spoiler>