Прямо сейчас у меня Raspberry Pi, подключенный к двум двигателям постоянного тока с датчиками света, которые посылают сигнал Raspberry каждый раз, когда через них проходит небольшое пластиковое колесо с отверстиями.
Поскольку двигатели неНе одинаково сильны, они повернут изгиб, когда я приведу их обоих в полную силу.Я бы хотел, чтобы робот ехал по прямой.Я хотел заархивировать это с помощью датчиков освещенности и прерываний.
Я планировал сделать это так: Оба двигателя запускаются одновременно, после срабатывания одного датчика освещенности произойдет прерывание.Внутри этого прерывания переменные должны быть изменены.В контуре возникает вопрос, где двигатель останавливается при срабатывании прерывания.Двигатель останавливается до тех пор, пока на другом колесе не сработает прерывание.
По сути, так:
Левый двигатель вызывает прерывание
Правый двигатель вызывает прерывание
и так далее.
Если и то и другое происходит так, что колеса должны останавливаться и запускаться в нужное время, чтобы робот ехал по прямой.
Это мой код Python:
def interrupt_routinerechts(callback):
global zaehler_r
global zaehler_l
print "Interrupt Rechts"
zaehler_r = 1
zaehler_l = 2
def interrupt_routinelinks(callback):
global zaehler_l
global zaehler_r
print "Interrupt Links"
zaehler_l = 1
zaehler_r = 2
GPIO.add_event_detect(4, GPIO.FALLING, callback=interrupt_routinerechts)
GPIO.add_event_detect(6, GPIO.FALLING, callback=interrupt_routinelinks)
print "Los Geht's"
runProgram = True
while runProgram:
try:
forward()
if zaehler_r == 1:
stoppr()
elif zaehler_r == 2:
forwardr()
if zaehler_l == 1:
stoppl()
elif zaehler_l == 2:
forwardl()
except KeyboardInterrupt:
print "Exception thrown -> Abort"
runProgram = False
GPIO.cleanup()
GPIO.cleanup()
Моя проблема в том, что прерывания не срабатывают так, как я себе это представляю, поэтому робот движется по кривой.Вот как они срабатывают.«Interrupt Links» означает «Interrupt Left», «Interrupt Rechts» означает «Interrupt Right».
Если это было недостаточно ясноЭто то, что я имел в виду с датчиком света и пластиковым колесом.