#python #raspberry-pi #sensors
Вопрос:
Я использую два датчика. Код работает для одного, но не для другого.
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
TRIG = 8
ECHO = 10
GPIO.setup(TRIG,GPIO.OUT)
GPIO.setup(ECHO,GPIO.IN)
print ("Distance measurement in progress")
GPIO.output(TRIG, False)
print ("Waitng For Sensor To Settle")
time.sleep(1)
def dist ():
while True:
time.sleep(0.1)
GPIO.output(TRIG, True)
time.sleep(0.00001)
GPIO.output(TRIG, False)
while GPIO.input(ECHO)==0:
pulse_start = time.time()
while GPIO.input(ECHO)==1:
pulse_end = time.time()
pulse_duration = pulse_end - pulse_start
distance = (pulse_duration * 36320) / 2
distance = round(distance, 2)
return distance
while True:
print(dist())
Я попробовал «глобальный», но на этот раз выдал мне «Ошибку имени». Пожалуйста, дайте мне другое решение.
Ладно, ребята, у меня для вас хорошие новости. (Собственное решение)
-Эти датчики работают с напряжением 3,3 В, поэтому я подключил два из них к контакту 3,3 В на Raspberry. Потому что не хочу использовать много диет на макете.
-Я попытался подключить один из них к контакту 5 В, а другой-к контакту 3,3 В. Это работает таким образом.(возможно, это поможет тем, у кого такая же проблема)
-Но все равно не понимаю, почему. Итак, есть ли какие-либо ограничения для использования контактов 3,3 В ?
Комментарии:
1. Этот код выдает вам ошибку? Это произойдет, если второй
while
цикл никогда не будет выполнен, но это маловероятно, если вы запустите код точно так, как описано выше.2. Если
GPIO.inpu(ECHO)
не возвращается1
(по какой-либо причине), тоpulse_end
никогда не назначается. Добавьте aprint('GPIO is 1')
ко второмуwhile
циклу, и мы увидим…3. Я попробовал твой путь. Да, он никогда не выходит из первого цикла. @Пифократ