Hallo
Ich habe ein Problem mit if und else, wie man villeicht schon an der überschrift erkennen kann
Und zwar:
Mein Code:
import RPi.GPIO as gpio
import time
from sensor import distance
def init() :
gpio.setmode(gpio.BOARD)
gpio.setup(12, gpio.OUT)
gpio.setup(11, gpio.OUT)
gpio.setup(13, gpio.OUT)
gpio.setup(15, gpio.OUT)
def forward(tf) :
init()
gpio.output(12, False)
gpio.output(11, True)
gpio.output(13, True)
gpio.output(15, False)
time.sleep(tf)
gpio.cleanup()
def halt(tf) :
init()
gpio.output(12, False)
gpio.output(11, False)
gpio.output(13, False)
gpio.output(15, False)
time.sleep(tf)
gpio.cleanup()
if distance < 20:
print distance()
halt(1)
else:
forward(1)
halt(1)
Alles anzeigen
Der import von den sensor daten klappt super, gpios werden auch angesprochen, nur die if/else statements werden einfach von python ignoriert.
Hier der Output der console:
pi@robot ~/robots $ sudo python forward.py
86.7087602615
pi@robot ~/robots $ sudo python forward.py
5.41776418686
Vom rein textlichen her, was man als aussenstehender Betrachter sehen kann wirkt alles normal, aber die gpio 12, 11, 13, 15 steuern eine L298N (ein relai (keine ahnung ob man das so schreibt )) die dann wieder motoren anwieft. Nun ist es so, das sie bei einem abstand von weniger als 20 cm (messdaten vom sensor) die motoren NICHT ansteuern soll. Tut sie aber aus irgend nem grund trotzdem
Erkennt jemand den Fehler oder bin ich einfach nur zu blöd um erkennen das irendwo ne definition einer funktion falsch ist...
lg Tim
PS: das sensor script ist hier einzusehen, wenn es von relevanz sein sollte
--------------
EDIT:
hab mich noch entschlossen zur leichtern fehlersuche das sensor script noch mit anzuhängen:
import time
import RPi.GPIO as GPIO
def distance():
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(22, GPIO.IN)
GPIO.output(7, False)
GPIO.output(7, True)
time.sleep(0.00001)
GPIO.output(7, False)
StartTime = time.time()
while GPIO.input(22) == 0:
StartTime = time.time()
while GPIO.input(22) == 1:
StopTime = time.time()
TimeElapsed = StopTime - StartTime
distance = (TimeElapsed * 34300) / 2
GPIO.cleanup()
return distance
print distance()
time.sleep(1)
Alles anzeigen
----------------