Dieses Script zeigt dir, wie du die beiden Servokanäle nutzen kannst. Die Funktion servo(x, y) erwartet zwei Argumente. x (1 - 2) ist der Servokanal der angesteuert werden soll und y (0 - 180) ist die Position, die der Servo anfahren soll.
# Import der benötigten Module
from microbit import *
# Servokontrolle
# 100 = 1 Millisekunden Impuls ganz rechts (0°)
# 150 = 1,5 Millisekunden Impuls mittig (90°)
# 200 = 2 Millisekunden Impuls ganz links (180°)
# Einstellung der PWM Periodenzeit
pin1.set_analog_period(10)
pin13.set_analog_period(10)
# Die scale-Funktion wird genutzt um die Eingabewerte
# (0-180°) in 100 - 200 (1 ms - 2 ms) umzurechnen
def scale(num, in_min, in_max, out_min, out_max):
# Rückgabe des auf eine ganze Zahl gerundeten Werts
return (round((num - in_min) * (out_max - out_min) / (in_max - in_min) + out_min))
# Die servo-Funktion steuert Servokanal 1 oder 2 (x)
# auf einen Position zwischen 0 und 180 (y)
def servo(x, y):
# Kanalabfrage mit Plausibilitätsprüfung der übergebenen Werte x und y
if x == 1 and y >= 0 and y <= 180:
# Pin 1 (Servokanal 1) PWM Signal gemäß Winkel y skalieren und anpassen
pin1.write_analog(scale(y, 0, 180, 100, 200))
elif x == 2 and y >= 0 and y <= 180:
# Pin 2 (Servokanal 2) PWM Signal gemäß Winkel y skalieren und anpassen
pin13.write_analog(scale(y, 0, 180, 100, 200))
else:
# wenn keine der oben definierten Situationen zutrifft
print("error")
while True:
servo(1, 0) # Kanal 1 0° (ganz rechts)
servo(2, 180) # Kanal 2 180° (ganz links)
sleep(2000) # 2 Sekunden Pause
servo(1, 180) # Kanal 1 180° (ganz links)
servo(2, 0) # Kanal 2 0 ° (ganz rechts)
sleep(2000) # 2 Sekunden Pause