Wetterstation Lösung

Aus microbit - Das Schulbuch
Zur Navigation springen Zur Suche springen

Schritt für Schritt

Öffne den micro:bit Block-Editor, um ein Programm für den BBC micro:bit zu schreiben: https://makecode.microbit.org/

Grundgerüst der Lösung

    Teil 1 - vor Messung von zwei Temperaturwerten und Errechnung der Kalibrierungswerte
  1. Durch Auslesen des analogen Spannungswertes eines Pins kann der micro:bit als Messgerät verwendet werden.
  2. Die Spannung des micro:bits von 3 Volt wird durch die elektronische Schaltung (Thermistor + Widerstand) und etwas Wartezeit (ca. 5-10 Min.) auf die aktuelle Temperatur eingestellt.
  3. Dann lesen wir die Spannung an PIN 0 aus und bilden diesen Wert in einer Variable ab.
  4. Den Spannungswert der Variablen geben wir zur Kalibrierung bei Drücken des Knopfs B im Display aus.
  5. Teil 2 - nach Errechnung der Kalibrierungswerte
  6. Die eingelesene Variable muss nur noch in eine Temperatur umgewandelt werden,
  7. Der umgerechnete Wert wird durch Drücken des Knopfs A im Display angezeigt.
  8. Lösungsschritte

    1. Wähle unter dem rosa gefärbten Begriff Eingabe den Block wenn Knopf A gedrückt und ziehe ihn nach rechts in den Arbeitsbereich. Klicke auf das kleine, nach unten zeigende Pfeilzeichen A und ändere dies auf B. Wir wollen den analogen Wert bei Druck auf den Knopf B auslesen und anzeigen. <spoiler text="Schritt 1 - Blöcke">
      input.onButtonPressed(Button.B, function () {}
      </spoiler>
    2. Wähle unter dem rot gefärbten Begriff Variablen den Block Erstelle eine Variable... auf gib der Variable den Namen TempWert. Ziehe den Block setze TempWert auf 0 nach rechts in den Arbeitsbereich direkt in den Block wenn Knopf B gedrückt. <spoiler text="Schritt 2 - Blöcke">
      input.onButtonPressed(Button.B, function () {TempWert = 0}
      </spoiler>
    3. Klappe die schwarz gefärbte Kategorie Fortgeschritten auf und ziehe den Block analoge Werte von Pin P0 unter dem dunkelrot gefärbten Begriff Pins direkt in den weißen Bereich 0 des Blocks setze TempWert auf 0. <spoiler text="Schritt 3 - Blöcke">
      input.onButtonPressed(Button.B, function () {TempWert = pins.analogReadPin(AnalogPin.P0)}
      </spoiler>
    4. Wähle unter dem blau gefärbten Begriff Grundlagen den Block zeige Zahl 0 und füge diesen Block in die Klammer wenn Knopf B gedrückt als letzte Zeile hinzu. <spoiler text="Schritt 4 - Blöcke">
      input.onButtonPressed(Button.B, function () {TempWert = pins.analogReadPin(AnalogPin.P0) basic.showNumber(0)}
      </spoiler>
    5. Wähle unter dem rot gefärbten Begriff Variablen den Block TempWert und ziehe den Block direkt in den weißen Bereich 0 des Blocks zeige Zahl  0. <spoiler text="Schritt 5 - Blöcke">
      input.onButtonPressed(Button.B, function () {TempWert = pins.analogReadPin(AnalogPin.P0) basic.showNumber(TempWert)}
      </spoiler>
    6. Wähle unter dem blau gefärbten Begriff Grundlagen den Block pausiere (ms) 100 und füge diesen Block in die Klammer wenn Knopf B gedrückt als letzte Zeile hinzu. Ändere den Wert 100 auf 1000 ms zur Verbesserung der Anzeige. <spoiler text="Schritt 6 - Blöcke">
      input.onButtonPressed(Button.B, function () {TempWert = pins.analogReadPin(AnalogPin.P0) basic.showNumber(TempWert) basic.pause(1000)}
      </spoiler>
    7. Fertig, dein Messinstrument ist einsatzbereit!
      Miß nun zwei mindestens 10 ° Celsius unterschiedliche Temperaturwerte und schreibe dir jeweils Temperatur ° Celsius/ Temperaturwert micro:bit (0-1023) auf.
      Danach führst du die Errechnung der Kalibrierungswerte wie angegeben durch.

      Großartig, du hast es geschafft. Gratuliere!

    Flussdiagramm

    TO DO

    Lösung

    Eine vollständige Lösung kannst du hier vergleichen. <spoiler text="Lösung">

    input.onButtonPressed(Button.A, function () {
        dht11_dht22.queryData(
        DHTtype.DHT22,
        DigitalPin.P0,
        true,
        true,
        true
        )
        basic.showString("T")
        basic.pause(1000)
        basic.showString("" + (dht11_dht22.readData(dataType.temperature)))
    })
    input.onButtonPressed(Button.B, function () {
        dht11_dht22.queryData(
        DHTtype.DHT22,
        DigitalPin.P0,
        true,
        true,
        true
        )
        basic.showString("H")
        basic.pause(1000)
        basic.showString("" + (dht11_dht22.readData(dataType.humidity)))
    })
    basic.showLeds(`
        . . . . .
        . . . . .
        . . # . .
        . . . . .
        . . . . .
        `)
    

    </spoiler>

    zurück zur Aufgabe