Code:
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
enable_pin = 18 # nur bei ULN2003 Treiber IC wichtig
coil_A_1_pin = 23 #
coil_A_2_pin = 24 #
coil_B_1_pin = 17 #
coil_B_2_pin = 18 #
# anpassen, falls andere Sequenz
StepCount = 4
Seq = range(0, StepCount)
Seq[0] = [0,1,0,0]
Seq[1] = [0,1,0,1]
Seq[2] = [0,0,0,1]
Seq[3] = [1,0,0,1]
Seq[4] = [1,0,0,0]
Seq[5] = [1,0,1,0]
Seq[6] = [0,0,1,0]
Seq[7] = [0,1,1,0]
GPIO.setup(enable_pin, GPIO.OUT)
GPIO.setup(coil_A_1_pin, GPIO.OUT)
GPIO.setup(coil_A_2_pin, GPIO.OUT)
GPIO.setup(coil_B_1_pin, GPIO.OUT)
GPIO.setup(coil_B_2_pin, GPIO.OUT)
GPIO.output(enable_pin, 1)
def setStep(w1, w2, w3, w4):
GPIO.output(coil_A_1_pin, w1)
GPIO.output(coil_A_2_pin, w2)
GPIO.output(coil_B_1_pin, w3)
GPIO.output(coil_B_2_pin, w4)
def forward(delay, steps):
for i in range(steps):
for j in range(StepCount):
setStep(Seq[j][0], Seq[j][1], Seq[j][2], Seq[j][3])
time.sleep(delay)
def backwards(delay, steps):
for i in range(steps):
for j in reversed(range(StepCount)):
setStep(Seq[j][0], Seq[j][1], Seq[j][2], Seq[j][3])
time.sleep(delay)
while True:
delay = raw_input("Zeitverzoegerung (ms)?")
steps = raw_input("Wie viele Schritte vorwaerts? ")
forward(int(delay) / 1000.0, int(steps))
steps = raw_input("Wie viele Schritte rueckwaerts? ")
backwards(int(delay) / 1000.0, int(steps))
Wenn ich das Script starte und den Motor vor oder zurückfahre zittert der Moror nur ohne sich zu drehen. Hätte jemand eine Idee was ich falsch gemacht habe ?
Lesezeichen