Я работаю над датчиком сонара, который эхосигнал и получает обратно.Также создан алгоритм, который рассчитывает расстояние на основе чтения.Но я сталкиваюсь с какой-то странной проблемой: иногда датчик посылает случайные данные, которые вообще не имеют отношения к фактическому расстоянию от объекта, где сигнал попадает в диапазоне от 5 см до 160 см, но датчики посылают как 2000 + см.Очень трудно понять, почему, а также он сам отключается.
Мой вопрос
- Почему датчики иногда отправляют ошибочные данные?
- Как обнаружитьв программе этот датчик выключен или включен?
Я использую датчик Sonar на Raspberry pi и использую этот код
# set Trigger to HIGH
GPIO.output(TRIGGER, True)
#print "GPIO", GPIO
# set Trigger after 0.01ms to LOW
time.sleep(0.00001)
GPIO.output(TRIGGER, False)
StartTime = time.time()
StopTime = time.time()
# save StartTime
try:
now = time.time()
# save the time it takes just before ECHO hears the TRIGGER pulse (0 means nothing received)
while GPIO.input(ECHO) == 0:
StartTime = time.time()
#print "StartTime ", StartTime
#print "now: ", now
if StartTime-now > 1:
return -1
#print("StartTime: " , StartTime) #Printing this causes incorrect measurements.
# save time of arrival
while GPIO.input(ECHO) == 1:
StopTime = time.time()
#print("StopTime: ", StopTime)
except KeyboardInterrupt:
return -1
# time difference between start and arrival
TimeElapsed = StopTime - StartTime
# multiply with the sonic speed (34300 cm/s)
# and divide by 2, because there and back
distance = (TimeElapsed * 34300) / 2
Я использую этот код для вычисления расстояния