Lüftungsassistent Loesung: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
 
(16 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 Metronom ==
== Hilfestellungen und Lösung zum Lüftungsassistent ==
;Ausgangsstellung Servo-Motor und Pfeil
;Ausgangsstellung Servo-Motor und Pfeil
:Zu Beginn setzen wir den Winkel des Servo-Motors auf 180°.
: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.
:Der Pfeil wird passend auf den Servo-Motor geklebt. Der Pfeil zeigt auf das rote Ende der Skala ("Fenster öffnen").


:'''Versuch'''
;Pfeilbewegung und Zeitintervall
:Setze die Nägel in trockene Erde. Es sollen nun die meisten LEDs abschalten.
:Wir unterteilen die zur Verfügung stehenden 180° in 6° Schritte.
:Setze die Nägel in feuchte Erde Nun sollten die meisten LEDs angehen.
: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)


;Sensordaten und Werte
:Bisher haben wir nur eine ungefähre Vorstellung davon, was der Sensorwert ist. Ergänzen wir, dass der aktuelle Messwert nur anzeigt wird, wenn die Taste A gedrückt wird.


:'''Versuch'''
</pre>
:Setze die Nägel in die trockene Erde, drücke A und notieren den Wert. Der Wert sollte im Bereich von 250 liegen.
:Setze die Nägel in die feuchte Erde, drücke A und notieren den Wert. Der Wert sollte im Bereich von 1000 liegen.


* Eine mögliche [https://makecode.microbit.org/_52f7xWKivA9V Lösung]




;Verschwende keine Energie
[[Lüftungsassistent|Zurück zur Aufgabe]]
:Wir möchten, dass die Batterien lange Zeit halten und daher können wir den Code optimieren. Unser Feuchtigkeitssensor soll nicht zu viel Energie verbrauchen.
:Wenn wir den Stromkreis direkt an den 3V Pin anschließen. Wird diese Messenheit dauerhaft mit Strom versorgt.
:Stattdessen können wir den Stromkreis mit Pin 3 (P1) verbinden und diesen Pin nur während der Messung einschalten. Dies spart Strom und vermeidet außerdem Korrosion an den Erdsonden (in unserem Fall Nägel).
:Wir können auch die Helligkeit des Bildschirms senken, um den Energieverbrauch der LEDs zu senken.
:Die Bodenfeuchtigkeit ändert sich sehr langsam, so dass wir sie nicht ständig messen müssen. Mit einer Pause von ca. 5 Sekunden kann zusätzlich Energie gespart werden.


== Komplettlösungen ==
<htmlet>makecode_embed</htmlet>
[[Datei:pflanzwächteraufbau.jpg|right|500px|border|Pflanzenwächter]]
Wenn der micro:bit mit Strom versorgt ist zeigt der mit der LED Matrix die Feuchtigkeit der Erde. Wenn die Taste A gedrückt wird, wird der Wert als Zahl ausgegeben. Den Pflanzenwächter in Aktion siehst du in diesem Video https://youtu.be/S8NppVT_paw.
Eine mögliche Lösung könnte so aussehen. <spoiler text="Lösung">[[Datei: Loesung_pflanzenwaechter.PNG |border|800px|eine mögliche Lösung]]</spoiler>

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)



Zurück zur Aufgabe