Upload
professorpaiva
View
265
Download
0
Embed Size (px)
Citation preview
13/10/13 Tutorial: como utilizar encoder rotativo com Arduino - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
labdegaragem.com/profiles/blogs/tutorial-como-utilizar-encoder-rotativo-com-arduino 1/3
Tutorial: como utilizar encoder rotativo comArduino
O encoder rotativo é um dispositivo de medição angular. Com ele é possível medir com precisão a rotação demotores. Alguns deles contém um botão pressionando o eixo. Neste tutorial, vamos mostrar como utilizá-locom Arduino. Este encoder rotativo contém 7 pinos: dois para fixação, dois para o botão e três para medição derotação. Vamos apenas utilizar os três pinos para medição de rotação. Para maiores informações sobre oencoder, clique aqui!
Primeiramente, faça a ligação abaixo:
Postado por Laboratório de Garagem em 24 julho 2012 às 15:00
Exibir blog
13/10/13 Tutorial: como utilizar encoder rotativo com Arduino - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
labdegaragem.com/profiles/blogs/tutorial-como-utilizar-encoder-rotativo-com-arduino 2/3
Abra a IDE do Arduino e conecte seu Arduino no PC. Passe a programação abaixo:
/* Rotary encoder read example */#define ENC_A 8#define ENC_B 9#define ENC_PORT PINB
void setup(){/* Setup encoder pins as inputs */pinMode(ENC_A, INPUT);digitalWrite(ENC_A, HIGH);pinMode(ENC_B, INPUT);digitalWrite(ENC_B, HIGH);Serial.begin (9600);Serial.println("Start");
}
void loop(){static uint8_t counter = 0; //this variable will be changed by encoder inputint8_t tmpdata;/**/tmpdata = read_encoder();if( tmpdata ) {Serial.print("Counter value: ");Serial.println(counter, DEC);
counter += tmpdata;
}
}
13/10/13 Tutorial: como utilizar encoder rotativo com Arduino - Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
labdegaragem.com/profiles/blogs/tutorial-como-utilizar-encoder-rotativo-com-arduino 3/3
Tags: arduino, encoder, rotativo, tutorial
Exibições: 4776
/* returns change in encoder state (-1,0,1) */int8_t read_encoder(){static int8_t enc_states[] = {0,-1,1,0,1,0,0,-1,-1,0,0,1,0,1,-1,0};static uint8_t old_AB = 0;/**/old_AB = old_AB 2; //remember previous stateold_AB |= ( ENC_PORT & 0x03 ); //add current statereturn ( enc_states[( old_AB & 0x0f )]);}
Selecione a versão do seu Arduino (UNO, Duemilanove, etc) e a porta (COMx, ttyUSBx, ttyACMx, etc) e cliqueem UPLOAD.
Abra o Serial Monitor e configure o baud para 9600. A palavra "Start" aparecerá. Gire o encoder para um lado epara o outro. A imagem abaixo mostra os dados que chegam do encoder:
Ao girar o encoder, o Arduino detecta a variação de pulso (-1,0,1) que chega dos pinos 8 e 9 e os converte eminteiro e mostra no Serial Monitor.
E é isso! Esperamos que tenha gostado! Se tiver dúvidas, poste aqui neste blog! Para sugestões detutoriais, clique aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outrosgaragistas, clique aqui e aqui! Até a próxima!
Referências:
http://en.wikipedia.org/wiki/Rotary_encoder
http://www.circuitsathome.com/mcu/programming/reading-rotary-encode...
http://www.sparkfun.com/products/9117
http://arduino.cc/playground/Main/RotaryEncoders