from machine import Pin
from time import ticks_us, sleep
s1 = Pin(26 , Pin.IN)
s2 = Pin(27 , Pin.IN)
key = Pin(25 , Pin.IN)
counter = 0
last_interrupt_time = 0
last_state = s1.value()
counter_key = 0
def s1_int_handler(p):
global counter, last_interrupt_time, last_state
current_time = ticks_us()
# Debounce period in microseconds (e.g., 2000us = 2ms)
debounce_period = 2000
if current_time - last_interrupt_time > debounce_period:
last_interrupt_time = current_time
state = s1.value()
if state != last_state:
last_state = state
if state == 1:
if s2.value() != state:
counter += 1
else:
counter -= 1
def key_int_handler(p):
global counter_key
counter_key +=1
print(counter_key)
s1.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=s1_int_handler)
key.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=key_int_handler)
print("Testing rotary encoder")
last_counter = None
while True:
if counter != last_counter:
last_counter = counter
print(counter)
# print(key.value())
sleep(0.01)