raspberrypi:pigpio_rencoder.py
KY-040 Rotary Encoder Module
Pagaliau puikiai veikianti enkoderio versija pitonui
Kai suki į vieną pusę pirma suveikia pirmas pinas po to antras. Kai suki į kitą puse pirma suveikia antras pinas o po to pirmas. Sugaudyti logika nėra taip paprasta. bet štai kodas kad nereiktų galvoti.
import pigpio import time count = 0 pin1 = 16 #encoder pin pin2 = 12 #encoder pin pin3 = 20 #push pin pi = pigpio.pi('aistis') #for local rpi change this to: pi = pigpio.pi() pi.set_mode( 12, pigpio.INPUT) pi.set_mode( 16, pigpio.INPUT) pi.set_mode( 20, pigpio.INPUT) pi.set_pull_up_down(12, pigpio.PUD_UP) pi.set_pull_up_down(16, pigpio.PUD_UP) pi.set_pull_up_down(20, pigpio.PUD_UP) previous_pin = 0 previous_level = 0 def cbf(gpio, level, tick): global previous_pin global previous_level global count if gpio == pin2 and previous_pin == pin1 and level == 0 and previous_level == 0: count -=1 print(count) if gpio == pin1 and previous_pin == pin2 and level == 0 and previous_level == 0: count +=1 print(count) previous_pin = gpio previous_level = level pi.callback(12, pigpio.EITHER_EDGE, cbf) pi.callback(16, pigpio.EITHER_EDGE, cbf) #pi.callback(20, pigpio.EITHER_EDGE, cbf) while True: time.sleep(0.1)
raspberrypi/pigpio_rencoder.py.txt · Last modified: by aistis



