Cómo usar el codificador rotativo KY-040 con Arduino

How to Use the KY-040 Rotary Encoder with Arduino

El codificador rotativo KY-040 es un dispositivo mecánico utilizado para medir la posición angular o la rotación. Se usa comúnmente en controles de volumen, navegación del menú y seguimiento de posición en robótica. Este tutorial lo guiará a través de la conexión y el uso del codificador rotativo KY-040 con Arduino.


Lo que necesitarás

  1. Módulo de codificador rotativo KY-040
  2. Arduino Board (por ejemplo, Uno, Mega, Nano)
  3. Cables de placa y jersey
  4. Una computadora con el Arduino IDE instalado

Paso 1: Comprender el codificador rotativo KY-040

El codificador KY-040 consiste en un dial rotativo que genera pulsos cuando se gira. También incluye un botón de presión incorporado.

KY-040 PINOUT

Alfiler Función
Gnd Suelo
+ Fuente de alimentación (5V)
Acariciar Señal de pulso de reloj
Dt Señal de pulso de datos
SUDOESTE Push Button Signal

Paso 2: Cableado el KY-040 a Arduino

Aquí le mostramos cómo conectar el KY-040 a un Arduino Uno:

Pin de KY-040 Alfiler de arduino
Gnd Gnd
+ 5V
Acariciar Pin 2
Dt Pin 3
SUDOESTE Pin 4

Paso 3: cargar el código

El siguiente código de ejemplo lee la rotación del codificador rotativo y detecta presionar el botón:

#define CLK 2  // Clock pin
#define DT 3   // Data pin
#define SW 4   // Switch pin

int counter = 0;     // Counter to track rotation
int currentStateCLK;
int lastStateCLK;

void setup() {
  pinMode(CLK, INPUT);
  pinMode(DT, INPUT);
  pinMode(SW, INPUT_PULLUP); // Internal pull-up for the button

  Serial.begin(9600);

  // Read the initial state of the CLK pin
  lastStateCLK = digitalRead(CLK);

  Serial.println("KY-040 Rotary Encoder Test");
}

void loop() {
  // Read the current state of the CLK pin
  currentStateCLK = digitalRead(CLK);

  // If the state has changed, the encoder has rotated
  if (currentStateCLK != lastStateCLK) {
    // Check the DT pin to determine the rotation direction
    if (digitalRead(DT) != currentStateCLK) {
      counter++;
    } else {
      counter--;
    }

    Serial.print("Counter: ");
    Serial.println(counter);
  }

  // Save the last state of CLK
  lastStateCLK = currentStateCLK;

  // Check if the button is pressed
  if (digitalRead(SW) == LOW) {
    Serial.println("Button pressed!");
    delay(200); // Debounce delay
  }
}

Paso 4: prueba la configuración

  1. Conecte el Arduino a su computadora a través de USB.
  2. Abra el IDE Arduino y seleccione el correcto Junta y Puerto bajo el Herramientas menú.
  3. Cargar el código haciendo clic en Subir.
  4. Abra el monitor en serie (Herramientas > Monitor en serie) y establecer la tasa de baudios en 9600.
  5. Gire el codificador y presione el botón. Observe el contador y el botón Presione los mensajes en el monitor en serie.

Aplicaciones del codificador rotativo KY-040

  1. Control de volumen o brillo
  2. Navegación de menores
  3. Seguimiento de la posición del motor
  4. Sistemas de robótica y automatización

Solución de problemas

  • Sin detección de rotación: Verifique el cableado CLK y DT y asegúrese de que los pines coincidan con el código.
  • Lecturas inestables: Agregue un pequeño retraso de debaldad para estabilizar las señales del codificador.
  • Botón no detectado: Verificar que el pin SW esté correctamente conectado y use INPUT_PULLUP modo.

Conclusión

Has interactuado con éxito el codificador rotativo KY-040 con Arduino. Este módulo versátil le permite agregar el seguimiento de rotación y la funcionalidad del botón a sus proyectos. ¡Experimente con él en diferentes aplicaciones, como construir controles personalizados o navegar menús en sus sistemas!

Escribir un comentario

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.