from time import sleep
import RPi.GPIO as GPIO

#Verwendete Pins des Raspberry Pi
A=18
B=23
C=24
D=25

time = 0.0025

def setup():
    GPIO.setmode(GPIO.BCM)

    #Pins als Ausgaenge definieren
    GPIO.setup(A, GPIO.OUT)
    GPIO.output(A, False)
    GPIO.setup(B, GPIO.OUT)
    GPIO.output(B, False)
    GPIO.setup(C, GPIO.OUT)
    GPIO.output(C, False)
    GPIO.setup(D, GPIO.OUT)
    GPIO.output(D, False)

#Schritte 1-8 festlegen
def Step1():
    GPIO.output(D, True)
    sleep(time)
    GPIO.output(D, False)

def Step2():
    GPIO.output(D, True)
    GPIO.output(C, True)
    sleep(time)
    GPIO.output(D, False)
    GPIO.output(C, False)

def Step3():
    GPIO.output(C, True)
    sleep(time)
    GPIO.output(C, False)

def Step4():
    GPIO.output(B, True)
    GPIO.output(C, True)
    sleep(time)
    GPIO.output(B, False)
    GPIO.output(C, False)

def Step5():
    GPIO.output(B, True)
    sleep(time)
    GPIO.output(B, False)

def Step6():
    GPIO.output(A, True)
    GPIO.output(B, True)
    sleep(time)
    GPIO.output(A, False)
    GPIO.output(B, False)

def Step7():
    GPIO.output(A, True)
    sleep(time)
    GPIO.output(A, False)

def Step8():
    GPIO.output(D, True)
    GPIO.output(A, True)
    sleep(time)
    GPIO.output(D, False)
    GPIO.output(A, False)

# Eine Umdrehung vorwaerts 
def forward():
    for i in range(512):
        Step1()
        Step2()
        Step3()
        Step4()
        Step5()
        Step6()
        Step7()
        Step8()
        

# Eine Umdrehung rueckwaerts
def backward():
    for i in range(512):
        Step8()
        Step7()
        Step6()
        Step5()
        Step4()
        Step3()
        Step2()
        Step1()

# Setzt die Zeit, die die Geschwindigkeit regelt:
# Je groesser die Zeit, desto langsamer die Geschwindigkeit
def setSpeed(newtime):
    time = newtime

def cleanup():
    GPIO.cleanup()
