def loop(gpio0, gpio1, resource):
print (str(gpio0) + " " + str(gpio1))
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(gpio0, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(gpio1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
previousCode = 0
while True:
# code(FW) = 0 1 3 2 0 1 3 2 0 1 3 2
rotationTable = [0,1,-1,0,-1,0,0,1,1,0,0,-1,0,-1,1,0]
val0 = GPIO.input(gpio0)
val1 = GPIO.input(gpio1)
currentCode = val0 << 1 | val1
# todo: chattering
if currentCode != previousCode:
code = previousCode << 2 | currentCode
rotation = rotationTable[code & 0x0f]
resource.diffRotate += rotation * TICK_DEGREE
resource.totalRotate += rotation * TICK_DEGREE
previousCode = currentCode
time.sleep(0.002)
gpioRotaryEncoder.py 文件源码
python
阅读 22
收藏 0
点赞 0
评论 0
评论列表
文章目录