Um simples programa para usar um encoder no arduino
Neste exemplo, o Arduino conta os pulsos do encoder e exibe o número de pulsos no monitor serial. Certifique-se de conectar corretamente os pinos do encoder ao Arduino e de que os sinais A e B do encoder estejam conectados aos pinos 2 e 3, respectivamente, ou ajuste os números dos pinos conforme necessário no código.
// Definindo os pinos para o encoder
#define ENCODER_PIN_A 2
#define ENCODER_PIN_B 3
// Variáveis para contar os pulsos do encoder
volatile long pulseCount = 0;
void setup() {
// Configurando os pinos do encoder como entrada
pinMode(ENCODER_PIN_A, INPUT);
pinMode(ENCODER_PIN_B, INPUT);
// Habilitando as interrupções para os pinos do encoder
attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_A), handleInterrupt, CHANGE);
attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_B), handleInterrupt, CHANGE);
// Inicializando a porta serial para comunicação com o monitor serial
Serial.begin(9600);
}
void loop() {
// Exibindo o número de pulsos do encoder no monitor serial
Serial.println(pulseCount);
delay(100); // Aguarda 100 milissegundos para evitar sobrecarregar o monitor serial
}
// Função de tratamento de interrupção para detectar mudanças de estado nos pinos do encoder
void handleInterrupt() {
// Verifica qual pino gerou a interrupção
if (digitalRead(ENCODER_PIN_A) == digitalRead(ENCODER_PIN_B)) {
pulseCount++; // Incrementa o contador se os pinos estiverem em estado igual
} else {
pulseCount--; // Decrementa o contador se os pinos estiverem em estado diferente
}
}