Невозможно сравнить данные в реальном времени в проекте python-raspberry pie - PullRequest
0 голосов
/ 14 марта 2019

Я разрабатываю систему, которая сравнивает обороты колес велосипеда.Для плавной езды оба колеса должны иметь одинаковые обороты.Если они не равны, тогда следует использовать тормоза.Я использую малиновый пирог для системы с двумя ИК-датчиками для определения частоты вращения колес.Я использую отдельную функцию в 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()
...