@Kiwi_gamer01: Anmerkungen zum Quelltext: ``as`` bei Importen ist zum umbenennen da, Du benennts das Modul aber gar nicht um.
Den `cleanup()`-Aufruf sollte man *sicherstellen*, der sollte auf jeden Fall am Ende ausgeführt werden. Zum Beispiel auch wenn der Code irgendwo mit einer Ausnahme aussteigt, zum Beispiel weil ein Fehler enthalten ist oder der Benutzer Strg+C drückt.
Die Schleife für das Aufsetzen der Pins ist überflüssig weil man `GPIO.setup()` auch eine Sequenz mit Pins und den Initialwert übergeben kann.
Namen die man nur aus syntaktischen Gründen braucht, deren Wert aber nicht verwendet wird, wie `i` im Beispiel, nennt man per Konvention `_`.
Schleifen über Zahlen die dann nur als Indexwert in eine Sequenz vewendet werden sind in Python ein „anti pattern“. Man kann direkt über die Sequenzen iterieren, ohne den Umweg über einen Indexwert. Die Grenzen/Obergrenze für solche Schleifen hart als magische Zahl in den Code zu schreiben ist auch nicht gut, weil fehleranfällig. Listen kennen ja ihre eigene Grösse.
Wenn man über zwei Sequenzen ”parallel” iterieren möchte gibt es die `zip()`-Funktion.
Ungetestet:
Code: Alles auswählen
#!/usr/bin/env python3
import time
from RPi import GPIO
def main():
control_pins = [7, 11, 13, 15]
halfsteps = [
[1, 0, 0, 0],
[1, 1, 0, 0],
[0, 1, 0, 0],
[0, 1, 1, 0],
[0, 0, 1, 0],
[0, 0, 1, 1],
[0, 0, 0, 1],
[1, 0, 0, 1],
]
try:
GPIO.setmode(GPIO.BOARD)
GPIO.setup(control_pins, GPIO.OUT, initial=0)
for _ in range(512):
for halfstep in halfsteps:
GPIO.output(control_pins, halfstep)
time.sleep(0.1)
finally:
GPIO.cleanup()
if __name__ == "__main__":
main()