Metronom Loesung: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 35: Zeile 35:


== Komplettlösungen ==
== Komplettlösungen ==
[[Datei:pflanzwächteraufbau.jpg|right|500px|border|Pflanzenwächter]]
<pre id="01">
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.
input.onButtonPressed(Button.A, function () {
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>
    music.changeTempoBy(-5)
})
input.onButtonPressed(Button.B, function () {
    music.changeTempoBy(5)
})
music.setTempo(100)
basic.forever(function () {
    music.playTone(262, music.beat(BeatFraction.Sixteenth))
    music.rest(music.beat(BeatFraction.Whole))
})
basic.forever(function () {
    basic.showNumber(music.tempo())
})
 
 
</pre>
 
* Eine mögliche [https://makecode.microbit.org/_71J3emcHKCv3 Lösung]
 
 
[[Metronom|Zurück zur Aufgabe]]
 
<htmlet>makecode_embed</htmlet>

Version vom 3. Januar 2022, 19:13 Uhr

Grundsätzliche Überlegungen

Der Boden selbst hat einen gewissen elektrischen Widerstand, der von der Menge an Wasser und Nährstoffen abhängt. Es wirkt wie ein variabler Widerstand in einer elektronischen Schaltung. Das Wasser ist nicht leitend, der Nährstoffgehalt ist leitend. Die Kombination von Wasser- und Bodennährstoffen verleiht dem Boden eine gewisse Leitfähigkeit. Je mehr Wasser also zusammen mit den Nährstoffen vorhanden ist, desto weniger elektrischen Widerstand wird der Boden haben.

Hilfestellungen und Lösung zum Metronom

Feuchtigkeit messen
Zu Beginn steuern wir den Pin P1 an und geben dort einen Strom aus.
Um die Feuchtigkeit der Erde mit dem mirco:bit messen zu können, lesen wir die Spannung an Pin P0 aus.
Der Wert dieses Pins liegt zwischen 0 (kein Strom) und 1023 (maximaler Strom) und kann als Variable abgebildet werden.
Gib der Variable einen sinnvollen Namen, wie zum Beispiel Feuchtigkeit.
Der Wert dieser Variable kann als Graph auf der LED Matrix ausgegeben werden.
Mit dem Befehl "plot bar graph" können Werte von Variablen grafisch dargestellt werden.
Versuch
Setze die Nägel in trockene Erde. Es sollen nun die meisten LEDs abschalten.
Setze die Nägel in feuchte Erde Nun sollten die meisten LEDs angehen.


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
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.


Verschwende keine Energie
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

input.onButtonPressed(Button.A, function () {
    music.changeTempoBy(-5)
})
input.onButtonPressed(Button.B, function () {
    music.changeTempoBy(5)
})
music.setTempo(100)
basic.forever(function () {
    music.playTone(262, music.beat(BeatFraction.Sixteenth))
    music.rest(music.beat(BeatFraction.Whole))
})
basic.forever(function () {
    basic.showNumber(music.tempo())
})



Zurück zur Aufgabe