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_programmieren_grundlagen [2023-08-07 15:05] – [Tasten & Touch-Logo] hof | gf_informatik:microbit_programmieren_grundlagen [2025-08-13 06:21] (aktuell) – hof | ||
---|---|---|---|
Zeile 12: | Zeile 12: | ||
Eine kurze Übersicht zu den wichtigsten Funktionen in englischer Sprache findest du im [[https:// | Eine kurze Übersicht zu den wichtigsten Funktionen in englischer Sprache findest du im [[https:// | ||
- | In der [[https:// | + | In der [[https:// |
===== - Getting started ===== | ===== - Getting started ===== | ||
- | Für die Programmierung des Microbits | + | Für die Programmierung des Microbits |
- | - **Online-Editor: | + | |
- | - Link: https:// | + | * Link: https:// |
- | - Verwende Chrome Browser | + | * Verwende |
- | - **Vergleich** zum Mu-Editor | + | * Tipp zum **Speichern: |
- | - Pro: unkompliziert, | + | * Speichere das Python-Script über die drei Punkte neben dem `Save` Button: {{.: |
- | - Contra: Speichern/ | + | * Speichere die Dateien in `OneDrive |
- | - Tipp zum **Speichern: | + | |
- | | + | <nodisp 2> |
- | - Verwende z.B. folgende Vorlage: {{ :gf_informatik:mikktrl_rob_aufgaben_template.docx |Template Aufgaben}} | + | ++++ Mu Editor| |
- | | + | |
- **Offline-Editor: | - **Offline-Editor: | ||
- **Mu Editor** (https:// | - **Mu Editor** (https:// | ||
Zeile 37: | Zeile 36: | ||
- Schreibe untenstehende Code-Zeilen. | - Schreibe untenstehende Code-Zeilen. | ||
- Klicke auf die " | - Klicke auf die " | ||
+ | |||
+ | ++++ | ||
+ | </ | ||
<code python> | <code python> | ||
Zeile 54: | Zeile 56: | ||
* Die zweite Zeile sagt dem Display, dass es die Zeichenkette " | * Die zweite Zeile sagt dem Display, dass es die Zeichenkette " | ||
- | Über das display-Objekt kannst du auf weitere Display-Funktionen zugreifen. Wenn du im Mu-Editor '' | + | Über das `display`-Objekt kannst du auf weitere Display-Funktionen zugreifen. Wenn du im Mu-Editor '' |
==== Bilder anzeigen ==== | ==== Bilder anzeigen ==== | ||
Zeile 66: | Zeile 68: | ||
Über das '' | Über das '' | ||
- | [[https:// | + | [[https:// |
==== Animationen mit Bilder-Listen ==== | ==== Animationen mit Bilder-Listen ==== | ||
Zeile 95: | Zeile 97: | ||
Der Microbit kann über die Tasten A und B sowie per Touch-Logo bedient werden. Mit den Funktionen '' | Der Microbit kann über die Tasten A und B sowie per Touch-Logo bedient werden. Mit den Funktionen '' | ||
+ | == Beispiel 1 == | ||
<code python> | <code python> | ||
from microbit import * | from microbit import * | ||
Zeile 101: | Zeile 104: | ||
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 111: | ||
Mit '' | Mit '' | ||
- | * 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 // |
- | * Dann wird gefragt, | + | * Dann wird gefragt, |
- | * 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 gerade berührt wird: 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()` 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`, | ||
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: '' | ||
+ | |||
+ | <code python> | ||
+ | from microbit import * | ||
+ | |||
+ | while True: | ||
+ | display.scroll(" | ||
+ | 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) | ||
+ | </ | ||
+ | |||
+ | * Es dauert seine Zeit, bis der Befehl `display.scroll(" | ||
+ | * 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()`, | ||
+ | * Hinweis: `get_presses()` gibt eine Zahl zurück. In einer Bedingung wie `if button_a.get_presses(): | ||
+ | |||
==== Pins ==== | ==== Pins ==== | ||
Zeile 136: | Zeile 163: | ||
Sobald du nun den Stromkreis zwischen Ground (GND) und Pin 0 schliesst (beide gleichzeitig berühren oder mit Kabel verbinden), sollte nun ein Happy-Smile angezeigt werden. | Sobald du nun den Stromkreis zwischen Ground (GND) und Pin 0 schliesst (beide gleichzeitig berühren oder mit Kabel verbinden), sollte nun ein Happy-Smile angezeigt werden. | ||
- | Für mehr Infos siehe hier: https:// | + | Für mehr Infos siehe hier: https:// |
===== - Beschleunigungssensor ===== | ===== - Beschleunigungssensor ===== | ||
Zeile 152: | Zeile 179: | ||
while True: | while True: | ||
sleep(100) | sleep(100) | ||
- | print(str(accelerometer.get_values())) | + | print(accelerometer.get_values()) |
</ | </ | ||
- | Innerhalb der Endlos-Schleife '' | + | Innerhalb der Endlos-Schleife '' |
* '' | * '' | ||
- | * in der zweiten Zeile sind gleich drei Funktionen ineinander verschachtelt: | + | * in der zweiten Zeile sind zwei Funktionen ineinander verschachtelt: |
- Die Funktion '' | - Die Funktion '' | ||
- | - die Funktion '' | ||
- die Funktion '' | - die Funktion '' | ||
- | **Probiere es aus:** Lade obigen Code auf den Microbit und starte | + | **Probiere es aus:** Lade obigen Code auf den Microbit und öffne |
- | **Versuche jetzt, den Microbit so zu bewegen, dass jeweils nur eine der drei Kurven | + | **Versuche jetzt, den Microbit so zu bewegen, dass jeweils nur einer der drei Werte ausschlägt.** |
Zur Info: | Zur Info: | ||
Zeile 188: | Zeile 214: | ||
Die Funktion '' | Die Funktion '' | ||
- | [[https:// | + | [[https:// |
- | [[https:// | + | [[https:// |
Zeile 213: | Zeile 239: | ||
</ | </ | ||
- | * Die Zeile '' | + | * Die Zeile '' |
* Der Funktion '' | * Der Funktion '' | ||
* Wenn du kurz testen willst, welche Frequenz wie klingt, [[https:// | * Wenn du kurz testen willst, welche Frequenz wie klingt, [[https:// | ||
Zeile 220: | Zeile 246: | ||
==== Melodien erstellen und abspielen ==== | ==== Melodien erstellen und abspielen ==== | ||
- | Das Modul '' | + | Das Modul '' |
<code python> | <code python> | ||
from microbit import* | from microbit import* | ||
Zeile 236: | Zeile 262: | ||
my_melody = [' | my_melody = [' | ||
- | music.set_tempo(bpm = 180) # 120 Schläge pro Minute | + | music.set_tempo(bpm = 180) # Standardeinstellung: |
- | music.set_tempo(ticks = 8) # 8 Schläge pro Takt ist Standard | + | music.set_tempo(ticks = 8) # Standardeinstellung: |
music.play(my_melody) | music.play(my_melody) | ||
Zeile 461: | Zeile 487: | ||
Zur Installation des Codes lädst du [[https:// | Zur Installation des Codes lädst du [[https:// | ||
* Alternative: | * Alternative: | ||
+ | |||
+ | **Beachte: | ||
=== Distanzmesser === | === Distanzmesser === | ||
Zeile 478: | Zeile 506: | ||
dist = newdist | dist = newdist | ||
# Show distance in decimeters | # Show distance in decimeters | ||
- | display.show(dist) | + | |
+ | | ||
sleep(100) | sleep(100) | ||
</ | </ | ||
Zeile 516: | Zeile 545: | ||
chassis.forward(speed=100) # Vorwärts fahren mit Geschwindigkeit 100 | chassis.forward(speed=100) # Vorwärts fahren mit Geschwindigkeit 100 | ||
+ | sleep(1000) | ||
chassis.stop() # Stoppen | chassis.stop() # Stoppen | ||
- | chassis.left() # Links drehen | + | chassis.left() # Links drehen |
+ | sleep(500) | ||
+ | chassis.stop() # Wieder anhalten | ||
</ | </ | ||