Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int A, B, i=0; // váriaveis de leitura e angulo começam como 0. A e B são os valores das portas e 'i' o angulo lido
- void setup() {
- pinMode(2, INPUT); // entrada dos valores do encoder
- pinMode(3, INPUT);
- Serial.begin(38400);
- //attachInterrupt(digitalPinToInterrupt(2), blink, CHANGE);
- //attachInterrupt(digitalPinToInterrupt(3), blink, CHANGE);
- A= digitalRead(2); //primeira leitura para não dar ruim
- B= digitalRead(3);
- /*sem essas leituras não tem como dizer qual o valor inicial de A e de B
- e por isso ele não conta direito sem elas */
- }
- void loop() {
- int ia = i; //'ia' -> i Anterior. i->i atual
- // SE o valor lido de A for igual a B
- if(A==B){
- if(A!=digitalRead(2)){
- i++; //SE o A mudar de valor em relação ao estado anterior quer dizer que o angulo aumentou
- A = digitalRead(2); // A é igualado ao valor da porta novamente
- }
- if(B!=digitalRead(3)){
- i--; //se for B que mudar de valor quer dizer que o angulo diminuiu
- B = digitalRead(3); //B é igualado ao valor da porta novamente
- }
- }
- //se A for diferente de B
- else{
- if(A!=digitalRead(2)){
- i--; // se A mudar de valor em relação ao valor lido anteriormente quer dizer que o angulo diminuiu
- A = digitalRead(2); // A é igualado ao valor da porta novamente
- }
- if(B!=digitalRead(3)){
- i++; // se B mudar de valor em relação ao valor lido anteriormente quer dizer que o angulo aumentou
- B = digitalRead(3); // B é igualado ao valor da porta novamente
- }
- }
- // essa função erve para printar o angulo só quando o valor do agulo atual for diferente do angulo anterior
- if(i != ia){
- Serial.print("\n\n\n\n\n\n\n\n\n\n pulsos:");
- Serial.println(i);
- }
- }
Add Comment
Please, Sign In to add comment