Je suis sur Raspberry Pi et j'utilise Python. J'aimerais recevoir une entrée continue d'un capteur de distance et faire en sorte que la valeur de la distance détermine s'il faut ou non envoyer une sortie.
J'ai une fonction de sortie, gogo, et une fonction de détection, sense, qui met à jour la valeur de la distance.
J'aimerais que la sortie démarre lorsque la distance est inférieure à 20 et que la sortie s'arrête lorsque la distance atteint le seuil de 20, mais la seule solution que je vois est une autre boucle.
Mon code ne fonctionne pas et je pense qu'il y a une bonne solution, mais je ne connais pas bien les boucles.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
distance = 40.0
TRIG = 4
ECHO = 18
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
GPIO.setup(23, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(25, GPIO.OUT)
def gogo():
Motor1A = 23
Motor1B = 24
Motor1E = 25
GPIO.setup(Motor1A,GPIO.OUT)
GPIO.setup(Motor1B,GPIO.OUT)
GPIO.setup(Motor1E,GPIO.OUT)
print "Turning motor on"
GPIO.output(Motor1A,GPIO.HIGH)
GPIO.output(Motor1B,GPIO.LOW)
GPIO.output(Motor1E,GPIO.HIGH)
def sense():
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO) == False:
start = time.time()
while GPIO.input(ECHO) == True:
end = time.time()
sig_time = end-start
#CM:
distance = sig_time / 0.000058
#inches:
#distance = sig_time / 0.000148
print('Distance: {} centimeters'.format(distance))
while distance > 20.0:
print (distance)
sense()
else:
print (distance)
gogo()
sense()
GPIO.cleanup()