Я разрабатываю систему, которая сравнивает обороты колес велосипеда.Для плавной езды оба колеса должны иметь одинаковые обороты.Если они не равны, тогда следует использовать тормоза.Я использую малиновый пирог для системы с двумя ИК-датчиками для определения частоты вращения колес.Я использую отдельную функцию в Python, чтобы получить обороты каждого колеса.Проблема в том, что я не могу сравнить оба значения.Поскольку данные непрерывны, if == не принимает все значения.Есть ли лучший метод для сравнения?
enter code here
import RPi.GPIO as GPIO
import time
sensor = 21 # define the GPIO pin our sensor is attached to
GPIO.setmode(GPIO.BCM) # set GPIO numbering system to BCM
GPIO.setup(sensor,GPIO.IN) # set our sensor pin to an input
sample = 1000 # how many half revolutions to time
count = 0
rpm1=0
rpm2=0
start = 0
end = 0
def set_start():
global start
start = time.time()
def set_end():
global end
end = time.time()
def get_rpm(c):
global count,rpm1 # delcear the count variable global so we can edit
it
if not count:
set_start() # create start time
count = count + 1 # increase counter by 1
else:
count = count + 1
if count==sample:
set_end() # create end time
delta = end - start # time taken to do a half rotation in seconds
delta = delta / 60 # converted to minutes
rpm1 = (sample / delta) / 2 # converted to time for a full single
rotation
def get_rpm2(c):
global count,rpm2 # delcear the count variable global so we can edit
it
if not count:
set_start() # create start time
count = count + 1 # increase counter by 1
else:
count = count + 1
if count==sample:
set_end() # create end time
delta = end - start # time taken to do a half rotation in seconds
delta = delta / 60 # converted to minutes
rpm2 = (sample / delta) / 2 # converted to time for a full single
rotation
count = 0 # reset the count to 0
GPIO.add_event_detect(sensor, GPIO.RISING, callback=get_rpm) # execute the
get_rpm function when a HIGH signal is detected
GPIO.add_event_detect(sensor, GPIO.RISING, callback=get_rpm2)
if rpm1 == rpm2
print("no wheels slipped")
else:
print("Brake applied")
try:
while True: # create an infinte loop to keep the script running
time.sleep(0.1)
except KeyboardInterrupt:
print " Quit"
GPIO.cleanup()