@dravida,
ja ich weiß was ein Schrittmotor ist, habe damit aber in der Praxis noch nichts gemacht.
Ich denke "Step" muss sich auch nicht zwingend auf Steppermotor beziehen. Aber wenn, ich eine Schrittmotorsteuerung schon mal in der Praxis programmiert hätte, währe mir das vielleicht bekannt vorgekommen.
Du hattest meinen Code in dein Script kopiert, aber dabei alles 4 Zeichen zuweit nach links eingerückt, wie Sirius3, ja auch schon bemerkte.
Ich denke so sollte es richtig sein: (Wie gesagt, ohne Gewähr, da ich es nicht ausprobieren kann, und ich nicht sicher bin wie deine Steuerung genau funktioniert)
Code: Alles auswählen
#!/usr/bin/env python
import sys
from gpiozero import DigitalOutputDevice
from time import sleep
from itertools import cycle, islice
# direction (1)
# number of steps (200)
# delay between steps (2)
MOTOR_PINS = [17, 4, 2, 10]
SHUTTER_PIN = 26
MODES = [ '1000', '1100', '0100', '0110', '0010', '0011', '0001', '1001']
def initialize():
motor_pins = [
DigitalOutputDevice(pin)
for pin in MOTOR_PINS
]
shutter = DigitalOutputDevice(SHUTTER_PIN)
return motor_pins, shutter
def main():
if len(sys.argv) != 4:
print("Arguments: [direction] [steps] [stepdelay]")
return
direction = sys.argv[1]
steps = int(sys.argv[2])
stepdelay = float(sys.argv[3])
if direction == "1":
modes = islice(cycle(MODES), steps)
else:
skip = -(steps % -len(MODES))
modes = islice(cycle(reversed(MODES)), skip, skip + steps)
motor_pins, shutter = initialize()
for step_num, mode in enumerate(modes):
for pin, value in zip(motor_pins, mode):
pin.value = int(value)
sleep(stepdelay)
if step_num % 5 == 0:
# Trigger the camera shutter.
shutter.on()
sleep(0.1)
shutter.off()
if __name__ == "__main__":
main()
Dein Link führt zu einem Eintrag bezüglich Numpy, der Python Bibliothek für numerische Mathematik. Das währe so wie mit "Kanonen auf Spatzen schießen"
In diesem Fall kann man das sicher ohne Numpy lösen.
Wenn der Code jetzt immer noch nicht funktioniert, kann ich nur vorschlagen, dass du mal die Bitmuster und in welcher Reigenfolge sie gesetzt werden als Text postest. Dann kann ich mir besser vorstellen was du erwartest.