Deutsch English |
DU LERNST HIER... |
wie du mit dem Beschleunigungssensor Lageänderungen und Bewegungen des micro:bit erfassen kannst. |
SENSORWERTE |
Der Beschleunigungssensor des micro:bit misst sowohl die konstante Erdbeschleunigung von rund 10 m/s2, die vertikal nach unten zeigt und Beschleunigungen, die durch Bewegungen zustande kommen.
Es ist ähnlich wie bei der Lageanzeige von Flugzeugen. Wenn man das Board nach vorne oder nach hinten neigt, ändert der Pitch-Winkel, bei der Seitwärtsneigung ändert der Roll-Winkel. Im Programm verwendest du das Accelerometer-Objekt und rufst accelerometer.get_x(), accelerometer.get_y() oder accelerometer.get_z() auf, die Werte im Bereich von ungefähr -2000 bis 2000 liefern, die den Beschleunigungen -20 m/s2 und 20 m/s2 entsprechen. Mit acceloremeter.get_values() erhältst du alle drei Werte in einem Tupel zurück. |
MUSTERBEISPIELE |
Sensorwerte abfragen Starte das unten stehende Programm, kippe den micro:bit bit ausgehend von der horizontalen Lage nach links bzw. nach rechts unten und beobachte dabei die Sensorwerte, die im Terminalfenster ausgeschrieben werden.
Programm: from microbit import * while True: acc = accelerometer.get_x() print (acc) if acc > 0: display.show(Image.ARROW_E) else: display.show(Image.ARROW_W) sleep(100)
Es wird nur ein Pixel angezeigt, das sich je nach Neigung nach rechts, links, oben oder unten verschiebt. Ziel ist es, die Libelle so auszurichten, dass die mittlere LED leuchtet. Im Programm verwendest du vier Bedingungen, um den x- und y-Wert des Pixels zu bestimmen und löschst dann das Pixel, bevor du das neue anzündest. Programm: from microbit import * x = 1 y = 1 while True: accX = accelerometer.get_x() accY = accelerometer.get_y() if accX > 100 and x < 4: x += 1 elif accX < -100 and x > 0: x -= 1 elif accY > 100 and y < 4: y += 1 elif accY < -100 and y > 0: y -= 1 display.clear() display.set_pixel(x, y, 9) sleep(100) |
MERKE DIR... |
Mit dem Beschleunigungssensor kannst du die Bewegungen und die Lage des micro:bits erfassen. Meist werden die Sensorwerte in einer Messschleife regelmässig alle 10 - 100 Millisekunden abgefragt. Man nennt dies auch Pollen der Sensorwerte. |
ZUM SELBST LÖSEN |
|
Unter der Beschleunigung versteht man allgemein die Änderungsrate der Geschwindigkeit, eindimensional also
wo v die Geschwindigkeit ist.
Aus den drei Beschleunigungskomponenten kannst du die Winkel Pitch und Roll berechnen. Starte das folgende Programm und kippe das Board seitwärts bzw. nach vorne und hinter. Im Terminalfenster werden die Drehwinkel in Grad ausgeschrieben.
from microbit import * from math import * def getPitch(): a = accelerometer.get_values() pitch = atan2(a[1], -a[2]) return int(degrees(pitch)) def getRoll(): a = accelerometer.get_values() anorm = sqrt(a[0] * a[0] + a[1] * a[1] + a[2] * a[2]) roll = asin(a[0] / anorm) return int(degrees(roll)) while True: pitch = getPitch() roll = getRoll() print("p: " + str(pitch)) print("r: " + str(roll)) print() sleep(100)