Fazemos envio para todo o País. Portes gratis para Portugal Continental em encomendas superiores a 50€! Em encomendas superiores a 29,99€ e inferiores a 50€ portes de 2,83€, em encomendas iguais ou inferiores a 29,99€ portes de 4,31€. Loja física na cidade do Montijo
Porque temos dos preços mais baixos do mercado? Porque os custos operacionais são muito baixos, o que nos permite baixar em muito a nossa margem de venda, beneficiando o cliente.
A loja de componentes eletrónicos mais barata na cidade do Montijo

Programa encoder arduino

Escrito em 12 de abril de 2024

Programa encoder arduino

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