Como usar o nosso Encoder P17

Este projeto pode ser montado substituindo a chave rotativa (encoder) pelo módulo P17-Encoder da GBK Robotics, neste caso: a. Conecte o pino GND do Arduino à linha de alimentação negativa (preta ou azul) da protoboard; b. Coloque os três resistores de 220 ohms (ou 330 ohms) entre a linha de alimentação negativa e qualquer outra linha da protoboard; c. Coloque cada um dos três LEDs com o catodo (lado chanfrado) conectado a um dos resistores de 220 ohms (ou 330 ohms); d. Conecte o anodo do primeiro LED ao pino 11 do Arduino; e. Conecte o anodo do segundo LED ao pino 12 do Arduino; f. Conecte o anodo do terceiro LED ao pino 13 do Arduino; g. Ligue o pino Sinal 1 do módulo P17 na entrada analógica A2 do Arduino; h. Ligue o pino GND do módulo P17 a um dos pinos de GND do Arduino; i. Ligue o pino Sinal 2 do módulo P17 na entrada analógica A3 do Arduino.

IMG_3027

Para rodar esse codigo e necessario a instalacao da biblioteca RotaryEncoder.H

Codigo de Exemplo:

#include <RotaryEncoder.h>
int digito[8][3] = {
{ LOW, LOW, LOW }, // 0
{ LOW, LOW, HIGH }, // 1
{ LOW, HIGH, LOW }, // 2
{ LOW, HIGH, HIGH }, // 3
{ HIGH, LOW, LOW }, // 4
{ HIGH, LOW, HIGH }, // 5
{ HIGH, HIGH, LOW }, // 6
{ HIGH, HIGH, HIGH } // 7
};
int LED1 = 11;
int LED2 = 12;
int LED3 = 13;
RotaryEncoder encoder(A2, A3);
void setup() {
Serial.begin(9600);
// Habilitar a Interrupção 1 (Pin Change) para as entradas analógicas.
PCICR |= (1 << PCIE1);

// Habilita a interrupção para os pinos analógicos 2 e 3.
PCMSK1 |= (1 << PCINT10) | (1 << PCINT11);

pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
// Rotina do Serviço de Interrupção 1 (Pin Change)
// Esta rotina apenas é chamada quando ocorre uma mudança de sinal nos pinos A2 e A3
ISR(PCINT1_vect) {
encoder.tick();
}