Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
talit:microbit [2024-04-21 13:26] – [Auftrag 1] scatalit:microbit [2024-04-29 11:36] (aktuell) – [Lösungen Aufgaben] sca
Zeile 35: Zeile 35:
  
  
-===== - Micro:bit kennenlernen =====+===== - Aufgaben =====
  
 Die hilfreichste Quelle ist das Wiki vom Grundlagenfach 2M: https://sca.ksr.ch/doku.php?id=gf_informatik:microbit_programmieren_grundlagen Die hilfreichste Quelle ist das Wiki vom Grundlagenfach 2M: https://sca.ksr.ch/doku.php?id=gf_informatik:microbit_programmieren_grundlagen
  
-==== Auftrag 1 ====+==== Aufgabe 1: LED-Matrix ==== 
 + 
 +Erstelle GitHub-Repo **microbit**, lege darin die Codes ab.
  
    1. Das LED im Zentrum der $5 \times 5-$LED-Matrix soll leuchten. Drückt man den linken/rechten Knopf, soll sich das Licht nach links/rechts bewegen. Es soll immer genau eine LED leuchten.<WRAP>    1. Das LED im Zentrum der $5 \times 5-$LED-Matrix soll leuchten. Drückt man den linken/rechten Knopf, soll sich das Licht nach links/rechts bewegen. Es soll immer genau eine LED leuchten.<WRAP>
Zeile 46: Zeile 48:
    * Mit `display.clear()` kann man alle LEDs abschalten.    * Mit `display.clear()` kann man alle LEDs abschalten.
    * Mit `sleep(100)` kann man den Code für $100$ Millisekunden pausieren lassen.    * Mit `sleep(100)` kann man den Code für $100$ Millisekunden pausieren lassen.
-</WRAP>+</WRAP>\\
    1. Wahrscheinlich gibt es jetzt eine Fehlermeldung, wenn man über den Rand hinauslaufen will. Vermeide dies! Erreicht man den linken/rechten Rand, geht es nicht weiter in die linke/rechte Richtung.    1. Wahrscheinlich gibt es jetzt eine Fehlermeldung, wenn man über den Rand hinauslaufen will. Vermeide dies! Erreicht man den linken/rechten Rand, geht es nicht weiter in die linke/rechte Richtung.
  
 +==== Aufgabe 2: Würfel ====
 +
 +Implementiere einen Würfel. Drückt man eine der beiden Tasten, soll eine Zufallszahl $1$ bis $6$ generiert (-> random-Modul) und das entsprechende Würfelsymbol angezeigt werden. Zeichne die Bilder mit `display.set_pixel(...)` selbst.
 +
 +==== Aufgabe 3: Misc ====
 +
 +   1. Fotoschau: Im micro:bit sind viele verschiedene Bilder vordefiniert. Speichere einige davon in einer Liste. Mit den beiden Knöpfen soll man die Bilder durchgehen können.
 +   1. Designe ein eigenes hübsches Bild und füge es der Fotoschau hinzu.
 +   1. Random Shake: Der micro:bit verfügt über einen Beschleunigungssensor. Mit diesem kann man u.a. bestimmen, ob der micro:bit gerade geschüttelt wird. Modifiziere deinen Code aus Aufgabe 2: Jedes Mal, wenn der micro:bit geschüttelt wird, wird eine neue Zahl gewürfelt. Das Schütteln kann man auch in Online-Editor simulieren.
 +
 +Optional:
 +
 +   1. Benötigt zwei micro:bits: Über BLE können mehrere micro:bit miteinander kommunizieren. Verbinde zwei micro:bit miteinander und modifiziere den Würfel-Code wie folgt: Auf beiden micro:bits wird immer der gleiche Würfel angezeigt. Drückt man auf einem der beiden micro:bits einen Knopf, wird eine neue Zahl gewürfelt und auf *beiden* angezeigt. 
 +
 +
 +==== Lösungen Aufgaben ====
 +
 +
 +++++Lösungen|
 +
 +<nodisp 2>
 +
 +<code python auftrag_1.py>
 +# Imports go at the top
 +from microbit import *
 +
 +x = 2
 +y = 2
 +
 +while True:
 +    if button_a.get_presses():
 +        x -= 1
 +    if button_b.get_presses():
 +        x += 1
 +    if x < 0: x = 0
 +    elif x > 4: x = 4
 +    display.clear()
 +    display.set_pixel(x,y,9)
 +    sleep(100)
 +</code>
 +
 +<code python auftrag_2.py>
 +from microbit import *
 +import random
 +
 +def dice(n):
 +    display.clear()
 +    if n == 1:
 +        display.set_pixel(2,2,9)
 +    elif n == 2:
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +    elif n == 3:
 +        display.set_pixel(2,2,9)
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +    elif n == 4:
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +        display.set_pixel(0,0,9)
 +        display.set_pixel(4,4,9)
 +    elif n == 5:
 +        display.set_pixel(2,2,9)
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +        display.set_pixel(0,0,9)
 +        display.set_pixel(4,4,9)
 +    elif n == 6:
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +        display.set_pixel(0,0,9)
 +        display.set_pixel(4,4,9)
 +        display.set_pixel(0,2,9)
 +        display.set_pixel(4,2,9)
 +
 +while True:
 +    if button_a.get_presses() or button_b.get_presses():
 +        dice(random.randint(1,6))
 +    sleep(100)
 +</code>
 +
 +Alternative Ideen für dice-Funktion:
 +
 +<code python>
 +
 +### Variante 1
 +
 +def dice(n):
 +    display.clear()
 +    if n == 1:
 +        display.set_pixel(2,2,9)
 +    elif n == 2:
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +    elif n == 3:
 +        display.set_pixel(2,2,9)
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +    elif n == 4:
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +        display.set_pixel(0,0,9)
 +        display.set_pixel(4,4,9)
 +    elif n == 5:
 +        display.set_pixel(2,2,9)
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +        display.set_pixel(0,0,9)
 +        display.set_pixel(4,4,9)
 +    elif n == 6:
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +        display.set_pixel(0,0,9)
 +        display.set_pixel(4,4,9)
 +        display.set_pixel(0,2,9)
 +        display.set_pixel(4,2,9)
 +
 +### Variante 2
 +def dice(n):
 +    dots = [
 +        [[2,2]],
 +        [[0,4],[4,0]],
 +        [[2,2],[0,4],[4,0]],
 +        [[0,4],[4,0],[0,0],[4,4]],
 +        [[2,2],[0,4],[4,0],[0,0],[4,4]],
 +        [[0,4],[4,0],[0,0],[4,4],[0,2],[4,2]],
 +    ]
 +    display.clear()
 +    for pixel in dots[n-1]:
 +        display.set_pixel(pixel[0],pixel[1],9)
 +
 +### Variante 3
 +
 +def dice(n):
 +    display.clear()
 +    if n % 2 == 1:
 +        display.set_pixel(2,2,9)
 +    if n >= 2:
 +        display.set_pixel(0,4,9)
 +        display.set_pixel(4,0,9)
 +    if n >= 4:
 +        display.set_pixel(0,0,9)
 +        display.set_pixel(4,4,9)
 +    if n == 6:
 +        display.set_pixel(0,2,9)
 +        display.set_pixel(4,2,9)
 +</code>
 +
 +<code python auftrag_3.py>
 +</code>
  
-==== Auftrag 2 ==== 
  
-   1. **Buttons und LED-Matrix**: +</nodisp>
-      1. Micro:bit reagiert auf Tastendruck +
-      1. Bilder anzeigen auf LED-Matrix +
-      1. eigene Bilder designen und anzeigen +
-      1. Mit Knöpfen durch Liste mit Bildern gehen (Achtung: ev. kennen 1M Listen noch nicht) +
-   1. **Beschleunigungssensor**: +
-      1. Was macht dieser? Was bedeuten gemessene Werte? +
-      1. Bild auf LED-Matrix leuchtet heller, je höher Beschleunigung ist. +
-   1. **BLE**: +
-      1. Was ist BLE? Wozu ist es gut? +
-      1. Nachrichten zwischen zwei Micro:bits hin und her senden.+
  
 +++++
  
  • talit/microbit.1713706015.txt.gz
  • Zuletzt geändert: 2024-04-21 13:26
  • von sca