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_programmieren_grundlagen [2023-08-07 15:05] – [Tasten & Touch-Logo] hofgf_informatik:microbit_programmieren_grundlagen [2024-09-15 08:08] (aktuell) – [Motorsteuerung] hof
Zeile 16: Zeile 16:
 ===== - Getting started ===== ===== - Getting started =====
  
-Für die Programmierung des Microbits gibt es zwei Möglichkeiten:+Für die Programmierung des Microbits nutzen wir den Online-Editor:
    - **Online-Editor:**    - **Online-Editor:**
      - Link: https://python.microbit.org/      - Link: https://python.microbit.org/
-     - Verwende Chrome Browser +     - Verwende Chrome Browser (oder Edge)
-     - **Vergleich** zum Mu-Editor (unten)+
-       - Pro: unkompliziert, keine Installation nötig, schnelles Laden auf micro:bit +
-       - Contra: Speichern/Laden ist deutlich umständlicher+
      - Tipp zum **Speichern:**:      - Tipp zum **Speichern:**:
        - Kopiere deinen Code jeweils in ein Word Dokument.        - Kopiere deinen Code jeweils in ein Word Dokument.
        - Verwende z.B. folgende Vorlage: {{ :gf_informatik:mikktrl_rob_aufgaben_template.docx |Template Aufgaben}}        - Verwende z.B. folgende Vorlage: {{ :gf_informatik:mikktrl_rob_aufgaben_template.docx |Template Aufgaben}}
        - Bonus bei diesem Vorgehen: schöne Übersicht von allen deinen Codes!         - Bonus bei diesem Vorgehen: schöne Übersicht von allen deinen Codes! 
 +
 +<nodisp 2>
 +++++ Mu Editor|
    - **Offline-Editor:**    - **Offline-Editor:**
      - **Mu Editor** (https://codewith.mu/en/download)      - **Mu Editor** (https://codewith.mu/en/download)
Zeile 37: Zeile 37:
      - Schreibe untenstehende Code-Zeilen.      - Schreibe untenstehende Code-Zeilen.
      - Klicke auf die "Flash"-Taste und warte, bis dein Code auf den Microbit geladen ist: Wenn dein Microbit nun "Hello, World!" anzeigt, kannst du mit dem Programmieren beginnen.      - Klicke auf die "Flash"-Taste und warte, bis dein Code auf den Microbit geladen ist: Wenn dein Microbit nun "Hello, World!" anzeigt, kannst du mit dem Programmieren beginnen.
 +
 +++++
 +</nodisp>
  
 <code python> <code python>
Zeile 95: Zeile 98:
 Der Microbit kann über die Tasten A und B sowie per Touch-Logo bedient werden. Mit den Funktionen ''is\_pressed()'' bzw. ''is\_touched()'' kannst du fragen, ob die jeweilige Taste gedrückt ist. Das folgende Programm zeigt je nach betätigtem Bedienelement ein anderes Bild auf dem Display: Der Microbit kann über die Tasten A und B sowie per Touch-Logo bedient werden. Mit den Funktionen ''is\_pressed()'' bzw. ''is\_touched()'' kannst du fragen, ob die jeweilige Taste gedrückt ist. Das folgende Programm zeigt je nach betätigtem Bedienelement ein anderes Bild auf dem Display:
  
 +== Beispiel 1 ==
 <code python> <code python>
 from microbit import * from microbit import *
Zeile 101: Zeile 105:
     if button_a.is_pressed():     if button_a.is_pressed():
         display.show(Image.HAPPY)         display.show(Image.HAPPY)
-    if button_b.get_presses():+    if button_b.was_pressed():
         display.show(Image.SAD)         display.show(Image.SAD)
     if pin_logo.is_touched():     if pin_logo.is_touched():
Zeile 108: Zeile 112:
  
 Mit ''while True:'' wird eine Endlos-Schleife eröffnet: Der Code darunter wird endlos wiederholt:  Mit ''while True:'' wird eine Endlos-Schleife eröffnet: Der Code darunter wird endlos wiederholt: 
-  * Zuerst wird gefragt, ob die Taste A gerade gedrückt wird: Falls ja, soll das Display das Bild HAPPY anzeigen.  +  * Zuerst wird gefragt, ob die Taste A //jetzt gerade gedrückt wird//: Falls ja, soll das Display das Bild HAPPY anzeigen.  
-  * Dann wird gefragt, wie oft Taste B gedrückt worden ist: Falls mehr als Null mal, soll das Display das Bild SAD anzeigen.  +  * Dann wird gefragt, ob die Taste B// gedrückt worden ist//: Falls ja, soll das Display das Bild SAD anzeigen.  
-    * Hinweis: `get_presses()` gibt eine Zahl zurück - Python wandelt die Zahl in einen Wahrheitswert (Wahr oder Falsch) um, wobei Null mit `False` übersetzt wird und jede andere Zahl mit `True`+  * Dann wird gefragt, ob das Logo jetzt gerade berührt wird: Falls ja, soll das Display das Bild HEART anzeigen.
-  * Dann wird gefragt, ob das Logo berührt wurde: Falls ja, soll das Display das Bild HEART anzeigen.+
   * Dann springt das Programm wieder zum ersten Punkt – und so weiter und so fort.   * Dann springt das Programm wieder zum ersten Punkt – und so weiter und so fort.
- 
-Beachte, dass es für Tasten drei Befehle gibt: ''is\_pressed()'', ''get\_presses()'' und `was_pressed()`. 
-  * `is_pressed()` gibt `True` zurück, wenn die Taste im Moment der Abfrage gedrückt ist, aber sagt nichts darüber aus, ob sie in der Vergangenheit gedrückt worden ist. 
-  * `was_pressed()` gibt `True` zurück, falls die Taste seit dem letzten Aufruf der Funktion gedrückt worden ist, als auch, wenn die Taste bereits wieder losgelassen wurde.  
-  * `get_presses()` funktioniert ähnlich wie `was_pressed`, aber gibt die Anzahl Klicks seit dem letzten Funktionsaufruf zurück. Der Funktionsaufruf setzt den Zähler wieder auf Null zurück. 
  
 Diese If-Abfragen erfolgen so schnell, dass die Endlos-Schleife **jede Sekunde mehrere tausend Mal** durchlaufen wird. Du kannst also jederzeit eine Taste drücken und das Bild wird sofort angepasst – probiere es aus! Diese If-Abfragen erfolgen so schnell, dass die Endlos-Schleife **jede Sekunde mehrere tausend Mal** durchlaufen wird. Du kannst also jederzeit eine Taste drücken und das Bild wird sofort angepasst – probiere es aus!
 +
 +\\
 +== Beispiel 2 ==
 +Beachte, dass es für Tasten drei Befehle gibt: ''is\_pressed()'', `was_pressed()` und ''get\_presses()''. Um diese besser zu verstehen, hier ein weiteres Beispiel – Lade den Code auf deinen Microbit und probiere es aus:
 +
 +<code python>
 +from microbit import *
 +
 +while True:
 +    display.scroll("Hallo")
 +    if button_a.is_pressed():
 +        display.show(Image.DUCK) # Zeige Ente
 +        sleep(1000)
 +    if button_a.was_pressed():
 +        display.show(button_a.get_presses()) # Zeige, wie oft Taste A gedrückt
 +        sleep(1000)
 +</code>
 +
 +  * Es dauert seine Zeit, bis der Befehl `display.scroll("Hallo")` ausgeführt ist. Wenn du während dieser Zeit die A-Taste (mehrmals) drückst, wird keine Ente angezeigt, weil das Programm noch nicht bei der ersten if-Verzweigung angelangt ist.
 +  * Wenn der Text fertig angezeigt ist und du die A-Taste in diesem Moment //nicht// gedrückt hältst, wird keine Ente angezeigt, denn im Moment der if-Abfrage ist die Taste nicht gedrückt. Sofern du aber vorher (mehrmals) die A-Taste gerückt hast, springt das Programm nun in die zweite if-Verzweigung und es wird eine Sekunde lang angezeigt, wie oft die A-Taste gedrückt wurde.
 +  * Wenn der Text fertig angezeigt ist und du die A-Taste gedrückt hältst, springt das Programm in die erste, dann in die zweite if-Verzeigung. Es wird also erst eine Sekunde lang eine Ente angezeigt, dann die Anzahl Tastendrücke.
 +
 +\\
 +== Zusammenfassung ==
 +Hier nochmal die drei Funktion zusammengefasst: 
 +  * `is_pressed()` gibt `True` zurück, wenn die Taste im Moment des Aufrufs gedrückt ist, aber sagt nichts darüber aus, ob sie in der Vergangenheit gedrückt worden ist.
 +  * `was_pressed()` gibt `True` zurück, wenn die Taste seit dem letzten Aufruf der Funktion gedrückt worden ist, also auch, wenn die Taste bereits wieder losgelassen wurde. Wenn die Taste seit dem letzten Aufruf der Funktion immer noch gedrückt ist und die Funktion erneut aufgerufen wird, gibt sie `False` zurück. Nur wenn die Taste inzwischen losgelassen und //erneut// gedrückt wurde, gibt die Funktion `True` zurück.
 +  * `get_presses()` funktioniert ähnlich wie `was_pressed()`, aber gibt die Anzahl Klicks seit dem letzten Funktionsaufruf zurück. Der Funktionsaufruf setzt den Zähler wieder auf Null zurück.
 +    * Hinweis: `get_presses()` gibt eine Zahl zurück. In einer Bedingung wie `if button_a.get_presses():` wandelt Python die Zahl in einen Wahrheitswert (Wahr oder Falsch) um, wobei Null mit `False` übersetzt wird und jede andere Zahl mit `True`.
 +
  
 ==== Pins ==== ==== Pins ====
Zeile 152: Zeile 180:
 while True: while True:
     sleep(100)     sleep(100)
-    print(str(accelerometer.get_values()))+    print(accelerometer.get_values())
 </code> </code>
  
-Innerhalb der Endlos-Schleife ''while True'' werden zwei Befehele ständig wiederholt: +Innerhalb der Endlos-Schleife ''while True'' werden zwei Befehle ständig wiederholt: 
   * ''sleep(100)'' lässt das Programm während 100 Millisekunden in der Funktion sleep() verharren,    * ''sleep(100)'' lässt das Programm während 100 Millisekunden in der Funktion sleep() verharren, 
-  * in der zweiten Zeile sind gleich drei Funktionen ineinander verschachtelt: +  * in der zweiten Zeile sind zwei Funktionen ineinander verschachtelt: 
     - Die Funktion ''get_values()'' gibt die drei Werte vom Beschleunigungssensor für die $x-,y-$ und $z-$Achse zurück,      - Die Funktion ''get_values()'' gibt die drei Werte vom Beschleunigungssensor für die $x-,y-$ und $z-$Achse zurück, 
-    - die Funktion ''str()'' wandelt diese Zahlenwerte in eine Zeichenkette (engl. String) und  
     - die Funktion ''print()'' sendet diese Zeichenkette über USB, sodass sie am verbundenen Computer angezeigt werden kann.     - die Funktion ''print()'' sendet diese Zeichenkette über USB, sodass sie am verbundenen Computer angezeigt werden kann.
  
-**Probiere es aus:** Lade obigen Code auf den Microbit und starte im MU editor den Plotter (Button "Plotter" oben Mitte). Es werden drei Kurven angezeigt. Wenn du den Microbit wild schüttelst – achte auf das Kabel und darauf, dass du nicht deinen Laptop mitreisst – dann bewegen sich alle drei Kurven+**Probiere es aus:** Lade obigen Code auf den Microbit und öffne im Python Editor die Konsole („Show serial“). Wenn du den Microbit wild schüttelst – achte auf das Kabel und darauf, dass du nicht deinen Laptop mitreisst – dann verändern sich die drei Werte.
  
-**Versuche jetzt, den Microbit so zu bewegen, dass jeweils nur eine der drei Kurven ausschlägt.**+**Versuche jetzt, den Microbit so zu bewegen, dass jeweils nur einer der drei Werte ausschlägt.**
  
 Zur Info:  Zur Info: 
Zeile 236: Zeile 263:
 my_melody = ['g3:4', 'g3:4', 'b3:4', 'g3:4','c4:4', 'f4:4', 'c4:4', 'g3:8'] my_melody = ['g3:4', 'g3:4', 'b3:4', 'g3:4','c4:4', 'f4:4', 'c4:4', 'g3:8']
  
-music.set_tempo(bpm = 180) # 120 Schläge pro Minute wäre Standard +music.set_tempo(bpm = 180) # Standardeinstellung: 120 Schläge pro Minute (bpm) 
-music.set_tempo(ticks = 8) # Schläge pro Takt ist Standard+music.set_tempo(ticks = 8) # Standardeinstellung:Schläge pro Takt
  
 music.play(my_melody) music.play(my_melody)
Zeile 461: Zeile 488:
 Zur Installation des Codes lädst du [[https://github.com/tkilla77/maqueen/releases/latest/download/maqueen.hex|maqueen.hex]] herunter und auf den Microbit drauf (an einfachsten: Datei auf die Seite ziehen). Zur Installation des Codes lädst du [[https://github.com/tkilla77/maqueen/releases/latest/download/maqueen.hex|maqueen.hex]] herunter und auf den Microbit drauf (an einfachsten: Datei auf die Seite ziehen).
     * Alternative: Lade [[https://github.com/tkilla77/maqueen/blob/master/maqueen/maqueen.py|maqueen.py]] und füge die Datei deinem Projekt hinzu.     * Alternative: Lade [[https://github.com/tkilla77/maqueen/blob/master/maqueen/maqueen.py|maqueen.py]] und füge die Datei deinem Projekt hinzu.
 +
 +**Beachte:** Du benötigst jeweils **zwei** Dateien in deinem Projekt: `maqueen.py` ist die Bibliothek für die Motorensteuerung, diese musst du weder lesen noch verstehen. In der Hauptdatei `main.py` ist dein eigener Code, der die Motorensteuerung benützt (mit `from maqueen import *`).
  
 === Distanzmesser === === Distanzmesser ===
Zeile 478: Zeile 507:
         dist = newdist         dist = newdist
         # Show distance in decimeters         # Show distance in decimeters
-        display.show(dist)+        print(str(dist) + "0cm") # print on console 
 +        display.show(dist)       # ... and on display
     sleep(100)     sleep(100)
 </code> </code>
Zeile 516: Zeile 546:
  
 chassis.forward(speed=100) # Vorwärts fahren mit Geschwindigkeit 100 chassis.forward(speed=100) # Vorwärts fahren mit Geschwindigkeit 100
 +sleep(1000)     # 1s weiterfahren
 chassis.stop() # Stoppen chassis.stop() # Stoppen
-chassis.left() # Links drehen+chassis.left() # Links drehen bis auf weiteres 
 +sleep(500)     # Wenden während einer halben Sekunde 
 +chassis.stop() # Wieder anhalten
 </code>  </code> 
  
  • gf_informatik/microbit_programmieren_grundlagen.1691420735.txt.gz
  • Zuletzt geändert: 2023-08-07 15:05
  • von hof