首页>Raspberry Pi>source

我在使用树莓派3的项目中使用LS s40-6-1000zT(H)1000 p / r旋转编码器,但是树莓派未按照编码器规格正常工作(即未正确计数事件).问题? 任何解决方案?

from RPi import GPIO
from time import sleep
import tkinter as tk
a=22
b=23
GPIO.setmode(GPIO.BCM)
GPIO.setup(a,GPIO.IN)
GPIO.setup(b,GPIO.IN)
root=tk.Tk()
clkLastState=GPIO.input(a)
def call():
   global clkLastState
   global counter
   clkState=GPIO.input(a)
   if clkState != clkLastState:
           dtState=GPIO.input(b)
           if dtState != clkState:
              counter +=1
           else:
              counter -=1
           text=str(counter/2)
           print (text[0:-2])
           var.set(text)
   clkLastState=clkState
def my_callback(channel):
   call()
counter=0
clkLastState=GPIO.input(a)
#GPIO.add_event_detect(23,GPIO.BOTH,callback=my_callback)
print (counter)
var=tk.IntVar()
L1=tk.Label(root,bg="orange",fg="red",textvariable=var)
L1.pack()
# var.set(counter)
# root.after(500,main)
root.geometry("100x100")
#GPIO.add_event_detect(22,GPIO.BOTH,callback=my_callback)
GPIO.add_event_detect(23,GPIO.BOTH,callback=my_callback,debouncetime=6)
root.mainloop()
#var=tk.IntVar()
#L1=tk.Label(root,bg="orange",fg="red",textvariable=var)
#L1.pack()  
#GPIO.add_event_detect(23,GPIO.BOTH,callback=my_callback)
GPIO.cleanup()
最新回答
  • 7月前
    1 #

    pigpio对GPIO电平变化具有更确定的响应。

    尝试一下我的Pigpio Python示例。

    它需要Pigpio守护程序。

    sudo pigpiod

    如果Python无法跟上,您将不得不使用C.也许尝试这个pdif2 C示例.它还使用Pigpio守护程序。

  • usb:以大约10 MSPS的速度从ADC连续采集数据
  • python:如何将RPi中的可变数据发送到Arduino Mega