ich baue mir gerade einen automatischen Makroschlitten welcher mit einem Python Script laufen soll.
Nach langer Suche habe ich folgendes Script gefunden und es mir was die "Pin Belegung" und "Steodelay" angeht angepasst.
Code: Alles auswählen
import sys
import wiringpi
from time import sleep
# direction (1)
# number of steps (200)
# delay between steps (2)
gpio = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_GPIO)
motor_pin_a = 17
motor_pin_b = 4
motor_pin_c = 27
motor_pin_d = 10
shutterpin = 9
gpio.pinMode(motor_pin_a,gpio.OUTPUT)
gpio.pinMode(motor_pin_b,gpio.OUTPUT)
gpio.pinMode(motor_pin_c,gpio.OUTPUT)
gpio.pinMode(motor_pin_d,gpio.OUTPUT)
gpio.pinMode(shutterpin,gpio.OUTPUT)
wiringpi.pinMode(shutterpin,1)
wiringpi.pinMode(motor_pin_a,1)
wiringpi.pinMode(motor_pin_b,1)
wiringpi.pinMode(motor_pin_c,1)
wiringpi.pinMode(motor_pin_d,1)
if sys.argv[1] == '1':
start=0
finish=int(sys.argv[2],base=10)
increment=1
else:
start=int(sys.argv[2],base=10)
finish=0
increment=-1
stepdelay=float(sys.argv[3])
a = [ '1000', '1100', '0100', '0110', '0010', '0011', '0001', '1001']
for j in range(start,finish,increment):
i = j%4
if a[i][0:1] == '1':
gpio.digitalWrite(motor_pin_a,gpio.HIGH)
else:
gpio.digitalWrite(motor_pin_a,gpio.LOW)
if a[i][1:2] == '1':
gpio.digitalWrite(motor_pin_b,gpio.HIGH)
else:
gpio.digitalWrite(motor_pin_b,gpio.LOW)
if a[i][2:3] == '1':
gpio.digitalWrite(motor_pin_c,gpio.HIGH)
else:
gpio.digitalWrite(motor_pin_c,gpio.LOW)
if a[i][3:4] == '1':
gpio.digitalWrite(motor_pin_d,gpio.HIGH)
else:
gpio.digitalWrite(motor_pin_d,gpio.LOW)
sleep(stepdelay)
# sleep 100ms to let things settle.
sleep(0.1)
# Trigger the camera shutter.
gpio.digitalWrite(shutterpin,gpio.HIGH)
sleep(0.1)
gpio.digitalWrite(shutterpin,gpio.LOW)
Sobald ich dsa Script ausführe bekomme ich folgende Meldung:
Code: Alles auswählen
root@storageBox:~/rail# python macro.py
Traceback (most recent call last):
File "macro.py", line 29, in <module>
if sys.argv[1] == '1':
IndexError: list index out of range