wasserwaage
Bauteil: Beschleunigungssensor ยท Kategorie: onboard
Ein Leuchtpunkt zeigt die Neigung des micro:bit. Flach = Mitte, Kippen = der Punkt wandert in die Kipprichtung (wie die Libelle einer Wasserwaage).
Material
| Anzahl | Bauteil |
|---|---|
| 1 | micro:bit V2.2 |
Hardware
Eingebaut, kein Aufbau noetig.
Wie der Code funktioniert
accelerometer.get_x()/get_y()liefern die Beschleunigung in Milli-g. Im Ruhezustand wirkt nur die Erdanziehung - bei Neigung ergibt das etwa -1000..1000.2 + x // 300rechnet das auf eine Spalte 0..4 um (2 = Mitte).max(0, min(4, ...))haelt den Punkt auf der Matrix.display.clear()vor jedemset_pixel()- sonst bleibt eine Spur stehen.
Zeigt der Punkt spiegelverkehrt, das Vorzeichen tauschen (2 - x // 300).
Programm
Ganzer Code, Quelle main.py (hier automatisch eingefuegt):
# Sample: wasserwaage (eingebauter Beschleunigungssensor)
# Board: BBC micro:bit V2.2
# Sprache: MicroPython
#
# Ziel: Ein einzelner Leuchtpunkt auf der LED-Matrix zeigt die Neigung des
# micro:bit an. Liegt das Board flach, leuchtet die Mitte. Kippt man
# es, wandert der Punkt in die Kipprichtung - wie eine Libelle.
#
# --------------------------------------------------------------------------
# Hardware
# --------------------------------------------------------------------------
# Nichts anschliessen - der Beschleunigungssensor ist fest eingebaut.
# --------------------------------------------------------------------------
from microbit import *
while True:
# get_x(): quer zur Platine, get_y(): laengs. Einheit Milli-g.
# Bei Neigung etwa -1000..1000. Teilen durch 300 -> Schritte -3..3.
x = accelerometer.get_x()
y = accelerometer.get_y()
spalte = 2 + x // 300
zeile = 2 + y // 300
# Auf die 5x5-Matrix begrenzen (Index 0..4)
spalte = max(0, min(4, spalte))
zeile = max(0, min(4, zeile))
display.clear()
display.set_pixel(spalte, zeile, 9)
sleep(50)
Auf den micro:bit uebertragen
https://python.microbit.org/v/3 -> Code einfuegen -> Connect -> Send to micro:bit. Details: ../../../../docs/setup.md.
Erwartetes Verhalten
- Board flach auf den Tisch -> Punkt in der Mitte
- nach rechts kippen -> Punkt wandert nach rechts, usw.
- staerkeres Kippen -> Punkt am Rand
Moegliche Erweiterungen
- bei flacher Lage (Punkt in der Mitte) einen Ton oder ein Herz zeigen
accelerometer.get_z()dazunehmen: erkennen, ob das Board auf dem Ruecken liegt- Punkt mit Nachleuchten (alte Position schwaecher weiterzeigen)