В соответствии с моим проектом, я уже взаимодействую с поворотным энкодером с Raspberry с помощью метода обратного вызова прерываний и подключаю некоторый выход в зависимости от этого. Но я застрял, чтобы прочитать 3 вывода GPIO, поскольку я использую их как вход и сигнал чтения, поступающий от другого контроллер как 3.3v и 0v (для 1,0). Поскольку мой полный код такой длинный, я создал демонстрационный пример своего кода и предоставил его ниже.
import pigpio
import tkinter as tk
import time
class decoder: "for my interrupt event "
######
#######
if __name__=="__main__":
pi.set_mode(5,pigpio.INPUT)
pi.set_mode(6, pigpio.INPUT)
pi.set_mode(13, pigpio.INPUT)
pi.set_pull_up_down(5,pigpio.PUD_DOWN)
pi.set_pull_up_down(6, pigpio.PUD_DOWN)
pi.set_pull_up_down(13, pigpio.PUD_DOWN)
def callback(*arg):
####
def blinklevel1():
******
def blinklevel2():
******
def blinklevel3():
********
decoder=rotary_encoder.decoder(pi,22,23,callback())
root=tk.TK()
L1=tk.Label(root,text="1st level on")
L1.pack()
L2=tk.Label(root,text="2nd level on")
L2.pack()
L3=tk.Label(root,text="3rd level on")
L3.pack()
if pi.read(5)==1 and pi.read(6)==0 and pi.read(13)==0:
blinklevel1()
if pi.read(5) == 1 and pi.read(6) == 1 and pi.read(13) == 0:
blinklevel2()
if pi.read(5) == 1 and pi.read(6) == 0 and pi.read(13) == 1:
blinklevel3()
root.mainloop()
pi.stop()
Я особенно столкнулся с проблемой нижеприведенной части полный код:
if pi.read(5)==1 and pi.read(6)==0 and pi.read(13)==0:
blinklevel1()
if pi.read(5) == 1 and pi.read(6) == 1 and pi.read(13) == 0:
blinklevel2()
if pi.read(5) == 1 and pi.read(6) == 0 and pi.read(13) == 1:
blinklevel3()
Эта часть кода работает нормально, если я создал другую программу и поставил ее как ..
try:
while True:
if pi.read(5)==1 and pi.read(6)==0 and pi.read(13)==0:
blinklevel1()
if pi.read(5) == 1 and pi.read(6) == 1 and pi.read(13) == 0:
blinklevel2()
if pi.read(5) == 1 and pi.read(6) == 0 and pi.read(13) == 1:
blinklevel3()
finally:
....
Но я не могу использовать концепцию True в моем код проекта уже запущен tkinter l oop.