Temperatur-Kontrolle Lösung: Unterschied zwischen den Versionen

Aus microbit - Das Schulbuch
Wechseln zu: Navigation, Suche
K (Lösungsschritte - Teil 2)
K (Lösungsschritte - Teil 2)
Zeile 55: Zeile 55:
 
<li>Die Umrechnung des Messwertes erfolgt in drei Teilschritten. <br>
 
<li>Die Umrechnung des Messwertes erfolgt in drei Teilschritten. <br>
 
1. Teilschritt: Nullpunktverschiebung.<br>
 
1. Teilschritt: Nullpunktverschiebung.<br>
Da der micro:bit keinen negativen Strom an den Pins misst, wir der Nullpunkt zur ev. Messung von Minusgraden nach unten verschoben. Aus der Errechnung der Kalbrierungswerte ergibt dies im Beispiel '''199.65'''. Dieser Wert wird nun vom gemessenen analogen Wert von Pin P0 abgezogen.<br>
+
Da der micro:bit keinen negativen Strom an den Pins misst, wir der Nullpunkt zur ev. Messung von Minusgraden nach unten verschoben. Aus der Errechnung der Kalibrierungswerte ergibt dies im Beispiel '''199.65'''. Dieser Wert wird nun vom gemessenen analogen Wert von Pin P0 abgezogen.<br>
Wähle dazu aus dem violett gefärbten Kategorie '''Mathematik''' die Subtraktion '''0 - 0''' und ziehe sie in den Platz bei Knopf A hinein wo '''analoge Werte von Pin P0'''. Für die Steuerung des Korbs wird nun der Beschleunigungssensor ausgelesen und in einem Platzhalter zwischengespeichert. Füge den roten Block "ändere Platzhalter auf 0" ein und ändere Platzhalter in accX. In den Platz der 0 füge den rosa Block der Eingabe [[Datei:Iconmonstr-arrow-20re-120.png|20px]] "Beschleunigung (mg) x" hinzu. <br/>
+
Wähle dazu unter dem violett gefärbten Begriff '''Mathematik''' die Subtraktion '''0 - 0''' und ziehe sie in den Platz bei Knopf A hinein wo '''analoge Werte von Pin P0''' steht. Dadurch rutscht '''analoge Werte von Pin P0''' wieder heraus und wird schraffiert daneben angezeigt. Keine Sorge, wir reparieren das im nächsten Schritt gleich wieder.
Beginne wieder mit dem roten Block "ändere Platzhalter auf 0" und ändere Platzhalter in basketX. Die Mittelstellung der Position des Korbs befindet sich bei 2, die durch den Beschleunigungssensor <b>verändert</b> werden soll. Dazu wird im nächsten Schritt eine Berechnung erstellt, die die gemessene Beschleunigung der X-Achse <b>durch 200 teilt</b> um verwertbare Ergebnisse für die Korbposition zu erhalten (accX ÷ 200). <br/>
+
<spoiler text="Schritt 9 - Blöcke">
<b>Berechnung:</b> basketX = 2 + minimal(2, maximal(-2, accX ÷ 200)) <spoiler text="Berechnungsdetails">
+
<pre id="09">
Die Funktionen minimal und maximal geben den jeweils geforderten Wert der dahinter in Klammer stehenden Zahlenreihe aus.<br/>
+
    input.onButtonPressed(Button.A, function () {
z.B. minimal(1 ,5, 7, -2) [[Datei:Iconmonstr-arrow-20re-120.png|20px]] -2<br/>
+
    TempCalc = 0 - 0
od. maximal(1, 5, 7, -2) [[Datei:Iconmonstr-arrow-20re-120.png|20px]] 7<br/>
+
    basic.showNumber(TempCalc)
<br/>
+
    basic.pause(1000)
 +
})</pre></spoiler></li>
 +
 
 
accX kann Werte von ± 1024 darstellen, d.h. bei maximaler Neigung links -1024 und rechts +1024.<br/>
 
accX kann Werte von ± 1024 darstellen, d.h. bei maximaler Neigung links -1024 und rechts +1024.<br/>
 
D.h. bei maximal(-2, accX ÷ 200) wird der Maximalausschlag nach links (-1024 ÷ 200 ≈ -5) nivelliert und auf maximal -2 festgelegt. <br/>
 
D.h. bei maximal(-2, accX ÷ 200) wird der Maximalausschlag nach links (-1024 ÷ 200 ≈ -5) nivelliert und auf maximal -2 festgelegt. <br/>

Version vom 22. Dezember 2021, 11:09 Uhr

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 - Teil 1

    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. Schritt 1 - Blöcke
    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. Schritt 2 - Blöcke
    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. Schritt 3 - Blöcke
    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. Schritt 4 - Blöcke
    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. Schritt 5 - Blöcke
    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. Schritt 6 - Blöcke
    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.

    Lösungsschritte - Teil 2

    1. Kopiere dir den Lösungsteil 1 durch rechts Klicken auf die Klammer wenn Knopf B gedrückt und anschließend Duplizieren. Klicke auf das kleine, nach unten zeigende Pfeilzeichen B und ändere dies auf A damit dein Code nicht schraffiert angezeigt wird und ungültig bleibt. Schritt 7 - Blöcke
    2. Für die Errechnung (Kalkulation) des Temperaturwertes benötigen wir eine neue Variable. Wähle unter dem rot gefärbten Begriff Variablen den Block Erstelle eine Variable... auf gib der Variable den Namen TempCalc. Ändere im Block setze TempWert auf analoge Werte von Pin P0 auf TempCalc. Klicke dazu auf das kleine, nach unten zeigende Pfeilzeichen TempWert und ersetze es mit TempCalc. Erledige diese Änderung auch bei zeige Zahl TempWert und stelle auf TempCalc um. Schritt 8 - Blöcke
    3. Die Umrechnung des Messwertes erfolgt in drei Teilschritten.
      1. Teilschritt: Nullpunktverschiebung.
      Da der micro:bit keinen negativen Strom an den Pins misst, wir der Nullpunkt zur ev. Messung von Minusgraden nach unten verschoben. Aus der Errechnung der Kalibrierungswerte ergibt dies im Beispiel 199.65. Dieser Wert wird nun vom gemessenen analogen Wert von Pin P0 abgezogen.
      Wähle dazu unter dem violett gefärbten Begriff Mathematik die Subtraktion 0 - 0 und ziehe sie in den Platz bei Knopf A hinein wo analoge Werte von Pin P0 steht. Dadurch rutscht analoge Werte von Pin P0 wieder heraus und wird schraffiert daneben angezeigt. Keine Sorge, wir reparieren das im nächsten Schritt gleich wieder. Schritt 9 - Blöcke
    4. accX kann Werte von ± 1024 darstellen, d.h. bei maximaler Neigung links -1024 und rechts +1024.
      D.h. bei maximal(-2, accX ÷ 200) wird der Maximalausschlag nach links (-1024 ÷ 200 ≈ -5) nivelliert und auf maximal -2 festgelegt.
      Gleiches gilt für den Maximalausschlag nach rechts (1024 ÷ 200 ≈ 5) der mit minimal(2, ≈5) auf minimal 2 nivelliert wird.
      </spoiler> Somit erreicht man eine Verschiebung des Korbs um nicht mehr als 2 Positionen nach links (0) oder rechts (4) von der Mittelposition (2) ausgehend.
      Füge dazu den violetten Block "0 + 0" ein, in die zweite 0 füge den erweiterten Mathematik Block (…More) "minimal von 0 und 0" und in dessen zweite 0 den erweiterten Mathematik Block (…More) "maximal von 0 und 0" ein.
      Dies sieht so aus. Blöcke

      In die allerletzte 0 von "maximal von 0 und 0" ziehe den violetten Mathematik Block "0 ÷ 0". Ersetzte dort die erste 0 durch Platzhalter accX und die zweite 0 durch 200 mit der Tastatur.
      Der Block sieht nun wie folgt aus.Blöcke

      Nun werden die restlichen Teile der Berechnung für den Maximalausschlag der Steuerung (-2 / + 2) wie oben erklärt eingesetzt. Blöcke

      Abschließend für Schritt 4 soll der nun seiner Position entsprechend positionierte Korb wieder gezeichnet werden mit LED und "Zeichne x 0 y 0". Den Wert x setzte auf basketX und Wert y auf 4.
      Schritt 4 - Alle Blöcke

    5. Zu guter Letzt soll überprüft werden, ob das Ei durch die letzte Zeile unten durchfallen würde (wenn eggY > 4) und ein neues Ei wieder von oben erscheinen soll (ändere eggY auf -1). Allerdings soll hier die Position nicht mittig (2) starten, sondern per Zufall weiter links oder rechts – sonst wäre das Spiel ja zu einfach (ändere eggX auf pick random 0 to 4).
      Beginne mit einem dunkelgrünen Logik-Block "wenn wahr dann" und setzte die Logik "0 = 0" in den Bereich von wahr. In die linke 0 kommt eggY in die rechte "4" und das "=" wird in ein ">" umgewandelt.
      Danach füge zwei Mal den Block "ändere Platzhalter auf 0" ein. Beim ersten Block wird eggY auf "-1" geändert und beim zweiten eggX auf "wähle eine zufällige Zahle zwischen 0 und 4". Dies findest du unter dem Bereich Mathematik.
      Da das Ei nun wie eine Rakete von oben herunter saust und wir keine Zeit bekommen den Korb zu verschieben wird als allerletzter Block eine Pause "pausiere (ms) 300" unterhalb der dunkelgrünen Klammer wenn wahr dann eingefügt. Somit bleibt uns genügend Zeit zu reagieren. Schritt 5 - Blöcke
    6. Großartig, du hast es geschafft. Gratuliere!

    Flussdiagramm

    TO DO

    Lösung

    Eine vollständige Lösung kannst du hier vergleichen. Lösung


    zurück zur Aufgabe