MicroPython Servo

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

Achtung!

Ihr Webbrowser ist veraltet. Wechseln Sie jetzt zu einem aktuellen Browser für mehr Sicherheit, Geschwindigkeit und den besten Komfort auf dieser Seite.