Como usar o codificador rotativo KY-040 com Arduino

How to Use the KY-040 Rotary Encoder with Arduino

O codificador rotativo KY-040 é um dispositivo mecânico usado para medir a posição ou rotação angular. É comumente usado em controles de volume, navegação por menu e rastreamento de posição na robótica. Este tutorial o guiará através da conexão e do uso do codificador rotativo KY-040 com Arduino.


O que você precisará

  1. Módulo de codificador rotativo KY-040
  2. Board Arduino (por exemplo, Uno, Mega, Nano)
  3. Fios de pão e jumper
  4. Um computador com o Arduino IDE instalado

Etapa 1: Compreendendo o codificador rotativo KY-040

O codificador KY-040 consiste em um mostrador rotativo que gera pulsos quando girado. Ele também inclui um botão embutido.

KY-040 PILOUT

Alfinete Função
Gnd Chão
+ Fonte de alimentação (5V)
Clk Sinal de pulso de relógio
Dt Sinal de pulso de dados
SW Sinal de botão

Etapa 2: Fiação do KY-040 para Arduino

Veja como conectar o KY-040 a um Arduino Uno:

Pino KY-040 Pino Arduino
Gnd Gnd
+ 5V
Clk Pino 2
Dt Pino 3
SW Pino 4

Etapa 3: Carregue o código

O código de exemplo a seguir lê a rotação do codificador rotativo e detecta o botão pressiona:

#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
  }
}

Etapa 4: teste a configuração

  1. Conecte o Arduino ao seu computador via USB.
  2. Abra o Arduino IDE e selecione o correto Quadro e Porta sob o Ferramentas menu.
  3. Faça o upload do código clicando Carregar.
  4. Abra o monitor serial (Ferramentas > Monitor serial) e definir a taxa de transmissão como 9600.
  5. Gire o codificador e pressione o botão. Observe o contador e o botão, pressione as mensagens no monitor serial.

Aplicações do codificador rotativo KY-040

  1. Controle de volume ou brilho
  2. Navegação de menu
  3. Rastreamento da posição do motor
  4. Sistemas de robótica e automação

Solução de problemas

  • Sem detecção de rotação: Verifique a fiação CLK e DT e verifique se os pinos correspondem ao código.
  • Leituras instáveis: Adicione um pequeno atraso de debounce para estabilizar os sinais do codificador.
  • Botão não detectado: Verifique se o pino SW está devidamente conectado e usa INPUT_PULLUP modo.

Conclusão

Você interfigurou com sucesso o codificador rotativo KY-040 com o Arduino. Este módulo versátil permite adicionar rastreamento de rotação e funcionalidade de botão aos seus projetos. Experimente em diferentes aplicações, como criar controles personalizados ou navegar nos menus em seus sistemas!

Deixe um comentário

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.