Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
| gf_informatik:microbit_und_roboter_programmieren:aufgaben_hof [2025-11-12 07:17] – [Lösungen] gra | gf_informatik:microbit_und_roboter_programmieren:aufgaben_hof [2025-11-19 16:58] (aktuell) – [Lösungen] gra | ||
|---|---|---|---|
| Zeile 305: | Zeile 305: | ||
| === Aufgabe B6 – Wer würfelt höher? (Advanced) === | === Aufgabe B6 – Wer würfelt höher? (Advanced) === | ||
| - | Zwei Spielerinnen würfeln abwechslungsweise (eine mit linkem, eine mit rechtem Knopf). Es wird immer die jeweils gewürfelte Zahl angezeigt. Im Hintergrund werden für beide Spielerinnen diese Werte aufsummiert. Wer zuerst die Summe 42 (oder mehr) erreicht hat, hat gewonnen. Von dieser Spielerin wird dann das Lieblingstier angezeigt. | + | Zwei Spielerinnen würfeln abwechslungsweise (eine mit linkem, eine mit rechtem Knopf). Es wird immer die jeweils gewürfelte Zahl angezeigt |
| === Aufgabe B7 – Regentropfen (Advanced) === | === Aufgabe B7 – Regentropfen (Advanced) === | ||
| Zeile 412: | Zeile 412: | ||
| === Aufgabe B6 === | === Aufgabe B6 === | ||
| <code python> | <code python> | ||
| + | from microbit import * | ||
| + | import random | ||
| + | |||
| + | dice_1 = Image(" | ||
| + | dice_2 = Image(" | ||
| + | dice_3 = Image(" | ||
| + | dice_4 = Image(" | ||
| + | dice_5 = Image(" | ||
| + | dice_6 = Image(" | ||
| + | |||
| + | dice_all = [dice_1, | ||
| + | sum_a = 0 | ||
| + | sum_b = 0 | ||
| + | favorite_a = Image.DUCK | ||
| + | favorite_b = Image.GIRAFFE | ||
| + | |||
| + | while True: | ||
| + | if button_a.was_pressed(): | ||
| + | number = random.randint(1, | ||
| + | sum_a = sum_a + number | ||
| + | display.show(dice_all[number-1]) | ||
| + | if button_b.was_pressed(): | ||
| + | number = random.randint(1, | ||
| + | sum_b = sum_b + number | ||
| + | display.show(dice_all[number-1]) | ||
| + | if sum_a >= 42: | ||
| + | display.show(favorite_a) | ||
| + | sleep(2000) | ||
| + | sum_a = 0 | ||
| + | sum_b = 0 | ||
| + | if sum_b >= 42: | ||
| + | display.show(favorite_b) | ||
| + | sleep(2000) | ||
| + | sum_a = 0 | ||
| + | sum_b = 0 | ||
| </ | </ | ||
| === Aufgabe B7 === | === Aufgabe B7 === | ||
| <code python> | <code python> | ||
| + | from microbit import * | ||
| + | import random | ||
| + | mode = True | ||
| + | col = 2 | ||
| + | row = 0 | ||
| + | |||
| + | while True: | ||
| + | display.clear() | ||
| + | if button_a.was_pressed(): | ||
| + | mode = not mode | ||
| + | if mode: | ||
| + | row = random.randint(0, | ||
| + | col = random.randint(0, | ||
| + | for bright in range(9, | ||
| + | display.set_pixel(row, | ||
| + | sleep(30) | ||
| + | else: | ||
| + | display.set_pixel(col, | ||
| + | sleep(50) | ||
| + | if row < 4: | ||
| + | row = (row + 1) | ||
| + | else: | ||
| + | row = 0 | ||
| + | col = random.randint(0, | ||
| </ | </ | ||
| ++++ | ++++ | ||
| Zeile 424: | Zeile 483: | ||
| ==== Aufgaben C (Beschleunigungssensor) ==== | ==== Aufgaben C (Beschleunigungssensor) ==== | ||
| - | + | Studiere zuerst den Abschnitt [[..: | |
| - | === Aufgabe C1 === | + | === Aufgabe C1 – Umrechnen |
| Rechenaufgabe (ohne micro:bit). Stelle dir vor, ein vom micro:bit gemessener Beschleunigungswert sei $2642$. | Rechenaufgabe (ohne micro:bit). Stelle dir vor, ein vom micro:bit gemessener Beschleunigungswert sei $2642$. | ||
| Zeile 432: | Zeile 491: | ||
| 1. Wandle um in $\text{m}/ | 1. Wandle um in $\text{m}/ | ||
| - | === Aufgabe C2 === | + | === Aufgabe C2 – Gesamtbeschleunigung berechnen |
| Rechenaufgabe (ohne micro:bit). Unten sind die gemessenen Werte für die Beschleunigungen in die drei Koordinatenrichtungen angegeben. Berechne jeweils die **Gesamtbeschleunigung**: | Rechenaufgabe (ohne micro:bit). Unten sind die gemessenen Werte für die Beschleunigungen in die drei Koordinatenrichtungen angegeben. Berechne jeweils die **Gesamtbeschleunigung**: | ||
| Zeile 440: | Zeile 499: | ||
| - | === Aufgabe C3 === | + | === Aufgabe C3 – xyz-Beschleunigung beobachten |
| Zeige in der Konsole ("Show serial" | Zeige in der Konsole ("Show serial" | ||
| Zeile 447: | Zeile 506: | ||
| 1. Wie musst du den micro:bit halten und wie musst du dich bewegen? | 1. Wie musst du den micro:bit halten und wie musst du dich bewegen? | ||
| - | === Aufgabe C4 === | + | === Aufgabe C4 – Gesamtbeschleunigung in $\text{m}/ |
| 1. Schreibe ein Programm, welches die **Gesamtbeschleunigung** misst und den Wert in der Konsole ausgibt. Füge nach jeder Messung wieder eine Pause ein. | 1. Schreibe ein Programm, welches die **Gesamtbeschleunigung** misst und den Wert in der Konsole ausgibt. Füge nach jeder Messung wieder eine Pause ein. | ||
| 1. Hältst du den micro:bit still, sollten der bekannte Wert $9.81$ (oder zumindest Wert in der Nähe davon) angezeigt werden, unabhängig davon, in welche Richtung der micro:bit zeigt. | 1. Hältst du den micro:bit still, sollten der bekannte Wert $9.81$ (oder zumindest Wert in der Nähe davon) angezeigt werden, unabhängig davon, in welche Richtung der micro:bit zeigt. | ||
| 1. Bewege den micro:bit nun so, dass du eine möglichst grosse Beschleunigung misst. Beschädige ihn aber nicht! | 1. Bewege den micro:bit nun so, dass du eine möglichst grosse Beschleunigung misst. Beschädige ihn aber nicht! | ||
| - | 1. Erweiterung: Mit den Tasten sollst du nun zwischen drei Modi umstellen können: | + | |
| + | === Aufgabe C5 – Gesamtbeschleunigung in drei Einheiten === | ||
| + | |||
| + | 1. Erweitere Aufgabe C4: Mit den Tasten sollst du nun zwischen drei Modi umstellen können: | ||
| 1. Anzeige in mg (z.B. $1018$) | 1. Anzeige in mg (z.B. $1018$) | ||
| 1. Anzeige in $g$'s (z.B. $1.02$) | 1. Anzeige in $g$'s (z.B. $1.02$) | ||
| Zeile 460: | Zeile 522: | ||
| - | === Aufgabe | + | === Aufgabe |
| + | Dein micro:bit soll ein Angry-Face zeigen, sobald der Absolutwert der x- oder der y- Beschleunigung über einem Grenzwert von 100 mg liegt. Solange beide Werte (x und y) unter dem Grenzwert liegen, soll das Display dunkel bleiben. | ||
| + | - Challenge 1: Lade das Programm auf deinen micro:bit und bewege dich zu einem bestmmten Punkt im Zimmer und wieder zurück, ohne dass das Display auch nur einmal aufleuchtet. | ||
| + | - Challenge 2: Schaffst du das auch mit einem Grenzwert < 100? | ||
| + | |||
| + | ++++ Tipp:| | ||
| + | Die Funktion '' | ||
| + | ++++ | ||
| + | === Aufgabe C7 – Je schneller desto heller | ||
| Je fester der micro:bit beschleunigt wird, desto heller soll die LED-Matrix leuchten. | Je fester der micro:bit beschleunigt wird, desto heller soll die LED-Matrix leuchten. | ||
| Zeile 468: | Zeile 538: | ||
| Tipp 2: Verwende die Funktion '' | Tipp 2: Verwende die Funktion '' | ||
| - | < | + | === Lösungen === |
| + | |||
| + | < | ||
| ++++Lösungen Aufgaben C| | ++++Lösungen Aufgaben C| | ||
| === C1 === | === C1 === | ||
| Zeile 498: | Zeile 570: | ||
| === C4 === | === C4 === | ||
| + | <code python> | ||
| + | from microbit import * | ||
| + | import math | ||
| + | |||
| + | while True: | ||
| + | sleep(500) | ||
| + | ax, ay, az = accelerometer.get_values() | ||
| + | a = math.sqrt(ax*ax + ay*ay + az*az) | ||
| + | a_ms = a/1000*9.81 | ||
| + | print(a_ms) | ||
| + | </ | ||
| + | |||
| + | === C5 === | ||
| <code python> | <code python> | ||
| from microbit import * | from microbit import * | ||
| Zeile 521: | Zeile 606: | ||
| </ | </ | ||
| - | === C5 === | + | === C6 === |
| + | <code python> | ||
| + | from microbit import * | ||
| + | import music | ||
| + | |||
| + | trigger = 100 | ||
| + | |||
| + | while True: | ||
| + | sleep(200) | ||
| + | ax, ay, az = accelerometer.get_values() | ||
| + | print(accelerometer.get_values()) | ||
| + | if abs(ax) > trigger or abs(ay) > trigger: | ||
| + | display.show(Image.ANGRY) | ||
| + | else: | ||
| + | display.clear() | ||
| + | </ | ||
| + | |||
| + | === C7 === | ||
| <code python> | <code python> | ||
| from microbit import* | from microbit import* | ||