Mobile
Um codificador rotativo é um dispositivo genérico que permite determinar a posição e a velocidade angular de um acionamento executado fisicamente e registrar a medição de um processador ou autômato como Arduino .
Esses codificadores consistem em dois pinos para o botão (funciona como um botão normal) e três pinos para o codificador. Os três pinos do codificador são conectados um ao terra e os outros dois às respectivas entradas que designamos na placa Arduino . Esses dois sinais que saem do codificador nos dão um total de 4 combinações. 00, 01, 10 e 11. Isso é conhecido como 2 bits de código Gray.
Se tratarmos os pinos em código binário, os lemos como 00, 01, 10 ou 11. A sequência das saídas do codificador conforme giramos no sentido horário é 00, 01, 11, 10
Conexão
O módulo é alimentado diretamente por Arduino , então não precisamos de uma fonte de alimentação externa. Para conectar o codificador a Arduino , precisamos de três entradas digitais, duas para detecção do codificador e uma adicional se quisermos gravar a pressão da alavanca (SW)
Os pinos são conectados de acordo com a tabela:
Módulo Pin
Pin por Arduino UNO
CLK
D2
DT
D3
SW
D4
+
5V
GND
Arduino 5 e 6 de Arduino vão para os ânodos (+) dos respectivos LEDs, e seus cátodos para o aterramento comum que vai para a porta GND de Arduino . Lembre-se de que todas as massas devem estar unidas.
A configuração, sem os resistores em série, ficaria assim:
Código
Abra um novo esboço e copie o seguinte código:
const int interruptA = 0; // Interromper 0
const int interruptB = 1; // Interromper 1
int CLK = 2; // PIN2
int DAT = 3; // PIN3
int BOTÃO = 4; // PIN4
int LED1 = 5; // PIN5
int LED2 = 6; // PIN6
int COUNT = 0;
configuração vazia ()
{
attachInterrupt (interruptA, RoteStateChanged, FALLING);
// attachInterrupt (interruptB, buttonState, FALLING);
pinMode (CLK, INPUT);
digitalWrite (2, ALTO); // Puxe a alta restauração
pinMode (DAT, INPUT);
digitalWrite (3, ALTO); // Puxe a alta restauração
pinMode (BUTTON, INPUT);
digitalWrite (4, ALTO); // Puxe a alta restauração
pinMode (LED1, OUTPUT);
pinMode (LED2, OUTPUT);
Serial.begin (9600);
}
void loop ()
if (! (digitalRead (BUTTON)))
CONTAGEM = 0;
Serial.println ("STOP COUNT = 0");
digitalWrite (LED1, LOW);
digitalWrite (LED2, LOW);
atraso (2000);
Serial.println (COUNT);
// -------------------------------------------
void RoteStateChanged () // Quando CLK FALLING READ DAT
if (digitalRead (DAT)) // Quando DAT = HIGH IS FORWARD
COUNT ++;
digitalWrite (LED1, HIGH);
atraso (20);
else // Quando DAT = LOW IS BackRote
CONTAR--;
digitalWrite (LED2, ALTO);
Você pode ver como o nível dos LEDs varia conforme você gira a alavanca.