Lüftungsassistent Loesung: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
Der Servo-Motor funktioniert ähnlich wie der Minutenzeiger einer Uhr. Während der Minutenzeiger jedoch nur im Uhrzeigersinn läuft und 60 Minuten auf 360° aufteilt (6° pro Minute), bewegt sich der Servo-Motor in beide Richtungen und unterteilt die voreingestellte Zeitdauer auf 180°. | Der Servo-Motor funktioniert ähnlich wie der Minutenzeiger einer Uhr. Während der Minutenzeiger jedoch nur im Uhrzeigersinn läuft und 60 Minuten auf 360° aufteilt (6° pro Minute), bewegt sich der Servo-Motor in beide Richtungen und unterteilt die voreingestellte Zeitdauer auf 180°. | ||
== Hilfestellungen und Lösung zum | == Hilfestellungen und Lösung zum Lüftungsassistent == | ||
; | ;Ausgangsstellung Servo-Motor und Pfeil | ||
:Zu Beginn | :Zu Beginn setzen wir den Winkel des Servo-Motors auf 180°. | ||
:Der Pfeil wird passend auf den Servo-Motor geklebt. Der Pfeil zeigt auf das rote Ende der Skala ("Fenster öffnen"). | |||
:Der | |||
;Pfeilbewegung und Zeitintervall | |||
: | :Wir unterteilen die zur Verfügung stehenden 180° in 6° Schritte. | ||
: | :Nach einer bestimmten Dauer soll der Pfeil jeweils um 6° weiterspringen. | ||
::Bei geöffnetem Fenster 10x1000ms (= 10 Sekunden) | |||
::Bei geschlossenem Fenster 90x1000ms (= 90 Sekunden) | |||
;Akustischer Hinweis | |||
:Sobald der Pfeil bei "Fenster öffnen", bzw. "Fenster schließen" angekommen ist, soll uns der micro:bit ein akustisches Signal zum Öffnen und Schließen der Fenster geben. | |||
== Komplettlösungen == | |||
<pre id="01"> | |||
input.onButtonPressed(Button.A, function () { | |||
grad_pfeil = 180 | |||
basic.showLeds(` | |||
# # # # # | |||
# . . . # | |||
# . . . # | |||
# . . . # | |||
# # # # # | |||
`) | |||
for (let index = 0; index < 30; index++) { | |||
basic.pause(10 * 1000) | |||
grad_pfeil = grad_pfeil - 6 | |||
pins.servoWritePin(AnalogPin.P1, grad_pfeil) | |||
} | |||
music.playMelody("G B A G C5 B A B ", 120) | |||
basic.showLeds(` | |||
# # # # # | |||
# . # . # | |||
# . # . # | |||
# . # . # | |||
# # # # # | |||
`) | |||
for (let index = 0; index < 30; index++) { | |||
basic.pause(90 * 1000) | |||
grad_pfeil = grad_pfeil + 6 | |||
pins.servoWritePin(AnalogPin.P1, grad_pfeil) | |||
} | |||
music.playMelody("A F A F A F A F ", 120) | |||
basic.clearScreen() | |||
}) | |||
let grad_pfeil = 0 | |||
pins.servoWritePin(AnalogPin.P1, 180) | |||
</pre> | |||
* Eine mögliche [https://makecode.microbit.org/_52f7xWKivA9V Lösung] | |||
[[Lüftungsassistent|Zurück zur Aufgabe]] | |||
<htmlet>makecode_embed</htmlet> | |||
Aktuelle Version vom 4. Februar 2022, 13:20 Uhr
Grundsätzliche Überlegungen
Der Servo-Motor funktioniert ähnlich wie der Minutenzeiger einer Uhr. Während der Minutenzeiger jedoch nur im Uhrzeigersinn läuft und 60 Minuten auf 360° aufteilt (6° pro Minute), bewegt sich der Servo-Motor in beide Richtungen und unterteilt die voreingestellte Zeitdauer auf 180°.
Hilfestellungen und Lösung zum Lüftungsassistent
- Ausgangsstellung Servo-Motor und Pfeil
- Zu Beginn setzen wir den Winkel des Servo-Motors auf 180°.
- Der Pfeil wird passend auf den Servo-Motor geklebt. Der Pfeil zeigt auf das rote Ende der Skala ("Fenster öffnen").
- Pfeilbewegung und Zeitintervall
- Wir unterteilen die zur Verfügung stehenden 180° in 6° Schritte.
- Nach einer bestimmten Dauer soll der Pfeil jeweils um 6° weiterspringen.
- Bei geöffnetem Fenster 10x1000ms (= 10 Sekunden)
- Bei geschlossenem Fenster 90x1000ms (= 90 Sekunden)
- Akustischer Hinweis
- Sobald der Pfeil bei "Fenster öffnen", bzw. "Fenster schließen" angekommen ist, soll uns der micro:bit ein akustisches Signal zum Öffnen und Schließen der Fenster geben.
Komplettlösungen
input.onButtonPressed(Button.A, function () { grad_pfeil = 180 basic.showLeds(` # # # # # # . . . # # . . . # # . . . # # # # # # `) for (let index = 0; index < 30; index++) { basic.pause(10 * 1000) grad_pfeil = grad_pfeil - 6 pins.servoWritePin(AnalogPin.P1, grad_pfeil) } music.playMelody("G B A G C5 B A B ", 120) basic.showLeds(` # # # # # # . # . # # . # . # # . # . # # # # # # `) for (let index = 0; index < 30; index++) { basic.pause(90 * 1000) grad_pfeil = grad_pfeil + 6 pins.servoWritePin(AnalogPin.P1, grad_pfeil) } music.playMelody("A F A F A F A F ", 120) basic.clearScreen() }) let grad_pfeil = 0 pins.servoWritePin(AnalogPin.P1, 180)
- Eine mögliche Lösung