Codificador Rotatorio Sensor de Rotación Waveshare con Botón Pulsador
El Sensor de Rotación Waveshare es un módulo codificador rotatorio incremental con botón pulsador, diseñado para navegación de menús, ajuste de parámetros, conteo de pulsos e interfaces de usuario compactas. A diferencia de un potenciómetro, puede girar continuamente sin un tope fijo.
El codificador emite dos señales de fase para detección de dirección y conteo de pasos, mientras que el botón integrado añade una entrada de selección o confirmación. Funciona con Arduino, Raspberry Pi Pico, STM32, ESP32 y placas similares; consulta la wiki del Sensor de Rotación Waveshare para documentación del proveedor.
Úsalo cuando un proyecto necesite una interfaz de perilla duradera para pantallas, paneles de hardware inteligentes, controles de volumen, controles de brillo y menús integrados.
Especificaciones Técnicas
| Parámetro | Valor |
|---|---|
| Marca / SKU | Waveshare 9533 |
| Tipo de sensor | Codificador rotatorio incremental con botón pulsador |
| Voltaje de funcionamiento | 3.3 V a 5.3 V |
| Salida | Pulso digital de dos fases más señal de botón |
| Comportamiento de rotación | Rotación continua |
| Función del botón | Interruptor pulsador momentáneo |
| Controladores compatibles | Raspberry Pi Pico, Arduino, STM32, ESP32 |
| Lectura de señal | GPIO por sondeo o basado en interrupciones |
| Uso típico | Entrada de menú, detección de dirección, conteo de pulsos |
| Soporte para desarrollo | Ejemplos de entrada digital Arduino y bibliotecas para codificadores |
Diseño de la Placa y Guía de Etiquetas
- Eje giratorio: Gira en sentido horario o antihorario para generar pulsos en cuadratura.
- Botón pulsador: Presiona el eje para seleccionar, entrar o controlar el modo.
- Salida CLK: Señal de una fase del codificador para detección de pasos.
- Salida DT: Segunda señal de fase usada para determinar la dirección.
- Salida SW: Señal del botón, comúnmente leída con una resistencia pull-up.
- VCC/GND: Alimenta el módulo desde una fuente compatible de 3.3 V o 5 V.
- Nota sobre rebote: Los contactos mecánicos deben ser desreboteados en el firmware.
Escenarios de Aplicación
1. Contador de Menú Rotativo
Cuenta los pasos del codificador e imprime un índice de menú cada vez que gira el botón.
const int CLK_PIN = 2; const int DT_PIN = 3; int lastClk = HIGH; int menuIndex = 0; void setup() { pinMode(CLK_PIN, INPUT_PULLUP); pinMode(DT_PIN, INPUT_PULLUP); Serial.begin(115200); } void loop() { int clk = digitalRead(CLK_PIN); if (clk != lastClk && clk == LOW) { if (digitalRead(DT_PIN) != clk) menuIndex++; else menuIndex--; Serial.println(menuIndex); } lastClk = clk; }
2. Codificador con Botón Pulsador
Usa la rotación para cambiar valores y el botón del eje como comando de selección.
const int BUTTON_PIN = 4; void setup() { pinMode(BUTTON_PIN, INPUT_PULLUP); Serial.begin(115200); } void loop() { if (digitalRead(BUTTON_PIN) == LOW) { Serial.println("seleccionado"); delay(250); } }
3. Botón Giratorio de Brillo
Usa el movimiento del codificador para ajustar el brillo PWM sin la limitación de recorrido de un potenciómetro.
const int CLK_PIN = 2; const int DT_PIN = 3; const int LED_PIN = 9; int lastClk = HIGH; int brightness = 120; void setup() { pinMode(CLK_PIN, INPUT_PULLUP); pinMode(DT_PIN, INPUT_PULLUP); pinMode(LED_PIN, OUTPUT); } void loop() { int clk = digitalRead(CLK_PIN); if (clk != lastClk && clk == LOW) { brightness += (digitalRead(DT_PIN) != clk) ? 10 : -10; brightness = constrain(brightness, 0, 255); analogWrite(LED_PIN, brightness); } lastClk = clk; }
Lista de contenido
- 1 x Módulo Sensor de Rotación Waveshare
Preguntas frecuentes
P: ¿Es un potenciómetro?
R: No. Es un codificador incremental digital con rotación continua.
P: ¿Puede detectar dirección?
R: Sí. Compara la relación de fase entre CLK y DT.
P: ¿Necesita interrupciones?
R: Las interrupciones ayudan con rotación rápida, pero la consulta es suficiente para entradas de menú más lentas.
P: ¿Puede funcionar a 3.3 V?
R: Sí, soporta sistemas de 3.3 V cuando está cableado correctamente.
P: ¿Por qué el conteo salta?
R: El rebote mecánico puede causar bordes extra; usa lógica antirrebote o una biblioteca de codificador.
P: ¿Para qué sirve el botón pulsador?<







Valoraciones
No hay valoraciones aún.