"""
Lectura de un encoder rotativo
cuando presionamos el switch almacena el valor
en una variable
"""
from machine import Pin, UART
# Configuración de pines
pin_a = Pin(14, Pin.IN)
pin_b = Pin(15, Pin.IN)
pin_switch = Pin(13, Pin.IN, Pin.PULL_UP) # Pin del interruptor del encoder
# Variables para almacenar los valores del encoder
encoder_counter = 0
encoder_last_a = 0
saved_value = 0 # Variable para guardar el valor del contador
# Configurar el puerto serie
uart = UART(0, baudrate=115200) # Ajusta el número de puerto UART según corresponda
# Función de manejo de interrupción del encoder
def handle_encoder(pin):
global encoder_counter, encoder_last_a
a = pin.value()
if encoder_last_a != a:
if pin_b.value() != a:
encoder_counter += 1
else:
encoder_counter -= 1
encoder_last_a = a
print("Encoder:", encoder_counter) # Imprimir el valor del contador en el puerto serie
# Función de manejo de interrupción del interruptor
def handle_switch(pin):
global saved_value
saved_value = encoder_counter
print("Valor guardado:", saved_value) # Imprimir el valor guardado en el puerto serie
# Configurar interrupción en el pin A y el interruptor
pin_a.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=handle_encoder)
pin_switch.irq(trigger=Pin.IRQ_FALLING, handler=handle_switch)