Created
June 16, 2018 16:02
-
-
Save gbkrobotics/0af626119bf246427f9d4b6bb501fa51 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
- O Modulo Encoder 360° P17 é mecanismo eletromecânico capaz de medir a movimentação rotacional ou posição do eixo. Em geral, um encoder utiliza sensores ópticos para o fornecimento de sinais elétricos, os quais são retornados como sinais de movimento, posição ou direção. | |
- Entre as características do Modulo Encoder 360° destaca-se a perfeita distribuição dos pulsos nos 360° livres para giro do eixo. O Encoder da GBK em especial possui 25 pulsos por resolução, trabalhando com movimentação livre, ou seja, podem ser dadas infinitas voltas consecutivas. | |
- Em geral, o Modulo Encoder 360° é utilizado para controle da luminosidade ou mesmo volumes no caso de sistemas sonoros, enfim, a aplicação final vai depender da necessidade do operador, já que fornece controle preciso em velocidades de rotação, posicionamentos angulares, robótica, entre outras. | |
- Muito prático de utilizar, o Encoder vem acoplado em um módulo com pinos para conexão com sistemas microcontroladores, entre eles, o Arduino, mostrando-se um produto de rápida aplicação e excelentes resultados. | |
CARACTERÍSTICAS: | |
- Módulo Encoder 360°; | |
- Mede a movimentação rotacional ou posição do eixo; | |
- Perfeita distribuição dos pulsos; | |
- Possibilita a leitura do sentido de giro; | |
- 25 pulsos por resolução; | |
- Giro livre (sem limite); | |
- Ideal para controles precisos; | |
- Controle de velocidades de rotação, luminosidade, volume, robótica, etc; | |
- Rápida aplicação; | |
- Excelentes resultados; | |
ESPECIFICAÇÕES: | |
- Modelo: P17; | |
- Pulsos por revolução (Resolução) : 25; | |
- Tensão de Alimentação: 5V; | |
- Rotação: 360º (Sem limite); | |
- Saídas: 2 Saídas de Pulsos defasadas 90º; | |
- Dimensões (CxLxA): 38x18x16mm; | |
- Peso: 4g. | |
link da Biblioteca | |
https://github.com/mathertel/RotaryEncoder/blob/master/RotaryEncoder.h | |
*/ | |
#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(); | |
} | |
void loop() { | |
static int pos = 0; | |
int novaPos = encoder.getPosition(); | |
if (pos != novaPos) { | |
Serial.println(novaPos); | |
pos = novaPos; | |
if (pos >= 0 && pos <= 7) { | |
digitalWrite(LED1, digito[pos][0]); | |
digitalWrite(LED2, digito[pos][1]); | |
digitalWrite(LED3, digito[pos][2]); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment