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 19:03] – [Auftrag 2] 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 49: Zeile 51:
    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.
  
-==== Auftrag 2 ====+==== 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. 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.
  
-==== Auftrag 2 ====+==== 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> 
  
-   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.1713726228.txt.gz
  • Zuletzt geändert: 2024-04-21 19:03
  • von sca