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
gf_informatik:microbit_sca [2023-06-28 03:35] – [Aufgabe E1] scagf_informatik:microbit_sca [2026-01-05 14:36] (aktuell) sca
Zeile 4: Zeile 4:
  
 **Editor:** **Editor:**
-   Wir arbeiten ausschliesslich mit dem [[https://python.microbit.org/v/3|Online-Editor]]. Achtung: funktioniert *nichtin allen Browsern. Sicher funktioniert er in **Chrome**. +   Link zu **Online-Editor**: https://python.microbit.org/ 
-   Die Verwendung des Mu-Editors ist nicht gestattet (da er keinen Simulator besitzt). +   Verwende den Chrome Browser (oder Edge) 
-   * Da wir im Online-Editor arbeiten, ist das **Speichern** etwas mühsam: +   Der Editor beinhaltet auch einen **Simulator**! 
-     Wir müssen die Codes von Hand in ein File auf dem Computer kopieren. +   Tipp zum **Speichern:** 
-     * Verwende dazu die folgende Vorlage: {{ :gf_informatik:mikktrl_rob_aufgaben_template.docx |Template Aufgaben}} +     Lege auf OneNote eine Seite an, z.B"MicroBit - Aufgaben" 
-     Bonus bei diesem Vorgehen: schöne Übersicht von allen deinen Codes+     Copy-Paste deine Codes dort hineine
  
 **Bemerkungen:** **Bemerkungen:**
Zeile 16: Zeile 16:
      * [[gf_informatik:microbit_sca|Aufgaben]]      * [[gf_informatik:microbit_sca|Aufgaben]]
    * Für gewisse Aufgaben gibt es **zwei Versionen: Basic und Advanced**. Hier hast du die Wahl. Falls dir das Programmieren gut läuft, solltest du die Advanced-Aufgaben lösen. Für TALITs (und solche, die es sein sollten) sind die Advanced-Aufgaben Pflicht.    * Für gewisse Aufgaben gibt es **zwei Versionen: Basic und Advanced**. Hier hast du die Wahl. Falls dir das Programmieren gut läuft, solltest du die Advanced-Aufgaben lösen. Für TALITs (und solche, die es sein sollten) sind die Advanced-Aufgaben Pflicht.
-   * Adapter für USB C <-> A müssen selbst mitgebracht werden. 
  
 ===== - Aufgaben A (Display) ===== ===== - Aufgaben A (Display) =====
Zeile 145: Zeile 144:
  
 === Aufgabe C5 === === Aufgabe C5 ===
-Folgende Code-Zeilen erstellen eine Liste aus 10 Bildern unterschiedlicher Helligkeit:  
-<code python> 
-my_images = [] 
  
-for i in range(010, 1): +Die LEDs sollen anzeigenwie fest der Microbit geschüttelt wird:
-    my_img = Image() +
-    my_img.fill(i) +
-    my_images.append(my_img) +
-</code> +
-In der For-Schleife geschieht Folgendes für jeden Wert von i, also von 0 bis 9, also zehn mal: +
-  * Zuerst wird mit der Funktion ''Image()'' ein leeres Bild namens ''my\_img'' erstellt.  +
-  * Dieses Bild wird  nun gefülltDie Funktion ''fill()'' füllt jedes Pixel des Bildes mit einer bestimmten Helligkeit. Weil ''i'' bei jedem Durchlauf erhöht wird, wird ''my\_img'' bei jedem Durchlauf um eine Stufe heller – von 0 (dunkel) bis 9 (ganz hell) +
-  * Das Bild wird der Liste ''my\_images'' hinzugefügt.+
  
-Schreibe ein Programmin das du obigen Code hinein kopierstdas die Bilder mit 200 Milliskeunden Verzögerung nacheinander endlos anzeigt. +   * nicht geschüttelt: alle LEDs off 
 +   * ganz stark geschüttelt: alle LEDs mit Stärke 9 
 +   * dazwischen: Alle LEDs mit Werten 1-8je nachdemwie stark geschüttelt
  
-=== Aufgabe C6 === +Tipps:
-Speichere das Programm aus Aufgabe **C5** unter neuem Namen und ändere es +
-  * Immer dann, wenn du die Taste A drückst, soll das nächste Bild aus der Liste angezeigt werden.  +
-  * Nach dem letzten (hellsten) Bild, soll wieder das erste angezeigt werden. +
-  * Tipp: Damit du mit einem Tastendruck nicht gleich mehrere Bilder weiterspringst: baue eine Verzögerung mit ''sleep()'' ein.+
  
-=== Aufgabe C7 (Knacknuss=== +   * Verwende folgende Liste für die Anzeige:<WRAP><code python> 
-Speichere das Programm aus Aufgabe **C6** unter neuem Namen und ändere es+all_leds 
-  * Das Display soll umso heller leuchtenje stärker du den Microbit hin und her schüttelst.  +    Image("00000:00000:00000:00000:00000"), 
-  * Lese dazu den x-Wert aus dem Beschleunigungssensor aus. +    Image("11111:11111:11111:11111:11111"), 
-  * Dieser liegt im Bereich von +/- 2040. Du brauchst aber einen Index-Wert von 0...9. +    Image("22222:22222:22222:22222:22222")
-  * TippsDie Funktion ''abs()'' gibt den absoluten Wertalso den Betrag einer Zahl zurück. Der Operator ''%%//%%'' (//floor division//) dividiert und rundet das Resultat auf ganze Zahlen ab.+    Image("33333:33333:33333:33333:33333"), 
 +    Image("44444:44444:44444:44444:44444"), 
 +    Image("55555:55555:55555:55555:55555"), 
 +    Image("66666:66666:66666:66666:66666"), 
 +    Image("77777:77777:77777:77777:77777"), 
 +    Image("88888:88888:88888:88888:88888"), 
 +    Image("99999:99999:99999:99999:99999"), 
 +
 +</code></WRAP>
  
 ===== - Aufgaben D (Sounds) ===== ===== - Aufgaben D (Sounds) =====
Zeile 279: Zeile 273:
   * Solange eine Nachricht empfangen wird, soll das gesamte Display hell leuchten.    * Solange eine Nachricht empfangen wird, soll das gesamte Display hell leuchten. 
   * Solange keine Nachricht empfangen wird, soll das Display nicht leuchten.   * Solange keine Nachricht empfangen wird, soll das Display nicht leuchten.
 +
 +{{:gf_informatik:morse.png?400|}}
  
 === Aufgabe E4 (Beacon 1) === === Aufgabe E4 (Beacon 1) ===
Zeile 310: Zeile 306:
 Schreibt ein Programm, mit dem ihr anonyme Umfragen durchführen könnt.  Schreibt ein Programm, mit dem ihr anonyme Umfragen durchführen könnt. 
  
-* Wenn die Taste A gedrückt wird, sendet der Microbit die Nachricht "jo".  +* Wenn die Taste A gedrückt wird, sendet der Microbit die Nachricht "Ja".  
-* Wenn die Taste B gedrückt wird, sendet der Microbit die Nachricht "nai". +* Wenn die Taste B gedrückt wird, sendet der Microbit die Nachricht "Nein". 
-Füge für beide Tasten eine Verzögerung mit ''sleep(300)'' ein, sodass bei jedem Tastendruck nur //eine// Nachricht gesendet wird.+Verwende `get_presses()` und füge zur Sicherheit den Tasten eine Verzögerung mit ''sleep(300)'' hinzu, sodass bei jedem Tastendruck sicher nur //eine// Nachricht gesendet wird.
 * Wann immer eine Nachricht empfangen wird, wird sie ausgewertet: * Wann immer eine Nachricht empfangen wird, wird sie ausgewertet:
- * Ist der Inhalt der Nachricht "jo", so wird eine Variable zum Zählen der Ja-Stimmen um 1 erhöht. + * Ist der Inhalt der Nachricht "Ja", so wird eine Variable zum Zählen der Ja-Stimmen um 1 erhöht. 
- * Ist der Inhalt der Nachricht "nai", so wird eine Variable zum Zählen der Nein-Stimmen um 1 erhöht. + * Ist der Inhalt der Nachricht "Nein", so wird eine Variable zum Zählen der Nein-Stimmen um 1 erhöht. 
-* Wenn das Touch-Logo berührt wird, soll das Display die Anzahl Ja- und die Anzahl Nein-Stimmen anzeigen – und daraufhin beide Variablen wieder auf 0 setzen.+* Wenn das Touch-Logo berührt wird, soll das Display die Anzahl Ja- und die Anzahl Nein-Stimmen anzeigen.
 * Testet euer Programm: Einigt euch zu viert auf dieselbe Gruppen-Nummer (oder Kanal-Nummer), stellt Fragen und antwortet über die A- und B-Tasten. * Testet euer Programm: Einigt euch zu viert auf dieselbe Gruppen-Nummer (oder Kanal-Nummer), stellt Fragen und antwortet über die A- und B-Tasten.
  
Zeile 324: Zeile 320:
 ===== Lösungen ===== ===== Lösungen =====
  
-<nodisp 2>+<nodisp 1>
  
 ++++Lösungen Aufgaben A| ++++Lösungen Aufgaben A|
Zeile 585: Zeile 581:
 </code> </code>
  
-=== C5 – Variante A ===+=== C5 === 
 + 
 +Variante 1
 <code python> <code python>
 from microbit import * from microbit import *
  
-my_images = []+all_leds = [ 
 +    Image("00000:00000:00000:00000:00000"), 
 +    Image("11111:11111:11111:11111:11111"), 
 +    Image("22222:22222:22222:22222:22222"), 
 +    Image("33333:33333:33333:33333:33333"), 
 +    Image("44444:44444:44444:44444:44444"), 
 +    Image("55555:55555:55555:55555:55555"), 
 +    Image("66666:66666:66666:66666:66666"), 
 +    Image("77777:77777:77777:77777:77777"), 
 +    Image("88888:88888:88888:88888:88888"), 
 +    Image("99999:99999:99999:99999:99999"), 
 +]
  
-for i in range(091): +while True: 
-    my_img Image() +    # Variante 1 
-    my_img.fill(i+    ax,ay,az = accelerometer.get_values(
-    my_images.append(my_img)+     
 +    # Variante 2 
 +    ax accelerometer.get_x() 
 +    ay = accelerometer.get_y() 
 +    az = accelerometer.get_z()
  
-my_pos = 0 +    # Gesamtbeschleunigung 
- +    a (ax*ax + ay**2 + az**2)**0.5 
-while True+    if a < 1200: 
-    sleep(200+        display.show(all_leds[0]) 
-    if my_pos len(my_images- 1+    elif a <= 1500: 
-        my_pos +1+        display.show(all_leds[1]) 
 +    elif a <= 1800: 
 +        display.show(all_leds[2]
 +    elif a <= 2100: 
 +        display.show(all_leds[3]) 
 +    elif a <= 2400
 +        display.show(all_leds[4]) 
 +    elif a <2700: 
 +        display.show(all_leds[5]) 
 +    elif a <= 3000: 
 +        display.show(all_leds[6]) 
 +    elif a <= 3300: 
 +        display.show(all_leds[7]) 
 +    elif a <= 3600: 
 +        display.show(all_leds[8])
     else:     else:
-        my_pos = 0 +        display.show(all_leds[9]
-    display.show(my_images[my_pos])+     
 +    print(a) 
 +    sleep(400)
 </code> </code>
  
-=== C5 – Variante B ===+Variante 2 (elegant)
 <code python> <code python>
 +# Imports go at the top
 from microbit import * from microbit import *
 +import math
  
 my_images = [] my_images = []
  
-for i in range(0, 9, 1)+all_leds = [ 
-    my_img = Image() +    Image("00000:00000:00000:00000:00000"), 
-    my_img.fill(i+    Image("11111:11111:11111:11111:11111"), 
-    my_images.append(my_img+    Image("22222:22222:22222:22222:22222"), 
- +    Image("33333:33333:33333:33333:33333"), 
-display.show(my_images, delay = 200, loop = True+    Image("44444:44444:44444:44444:44444"), 
-</code> +    Image("55555:55555:55555:55555:55555")
- +    Image("66666:66666:66666:66666:66666"), 
-=== C6 === +    Image("77777:77777:77777:77777:77777"), 
-<code python> +    Image("88888:88888:88888:88888:88888"), 
-from microbit import * +    Image("99999:99999:99999:99999:99999")
- +]
-my_images = [] +
-my_pos = 0 +
- +
-for i in range(0, 9, 1): +
-    my_img = Image() +
-    my_img.fill(i+
-    my_images.append(my_img)+
  
 while True: while True:
-    if(button_a.is_pressed()): +    x,y,z = accelerometer.get_values() 
-        sleep(100+    a = math.sqrt(x*x+y*y+z*z
-        if my_pos < len(my_images) 1+    strength = int((a 1000) // 250) 
-            my_pos +1 +    if strength > 9
-        else+        strength 9 
-            my_pos = 0 +    elif strength < 0
-    display.show(my_images[my_pos])+        strength = 0 
 +    print(strength) 
 +    display.show(all_leds[strength]
 +    sleep(200)
 </code> </code>
  
-=== C7 === 
-<code python> 
-from microbit import * 
- 
-my_images = [] 
-my_pos = 0 
- 
-for i in range(0, 10, 1): 
-    my_img = Image() 
-    my_img.fill(i) 
-    my_images.append(my_img) 
- 
-while True: 
-    xAcceleration = accelerometer.get_x() 
-    # xAcceleration von +/-2040 nach 0...9 umrechnen: 
-    my_pos = abs(xAcceleration) // 205 
-    print(my_pos) 
-    display.show(my_images[my_pos]) 
-</code> 
 ++++ ++++
 </nodisp> </nodisp>
  • gf_informatik/microbit_sca.1687923305.txt.gz
  • Zuletzt geändert: 2023-06-28 03:35
  • von sca