that_one_nigga_you_k

para caverna

May 1st, 2019
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 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
  2.  
  3. void setup() {
  4.  
  5.   pinMode(2, INPUT); // entrada dos valores do encoder
  6.   pinMode(3, INPUT);
  7.   Serial.begin(38400);
  8.   //attachInterrupt(digitalPinToInterrupt(2), blink, CHANGE);
  9.   //attachInterrupt(digitalPinToInterrupt(3), blink, CHANGE);
  10.  
  11.   A= digitalRead(2); //primeira leitura para não dar ruim
  12.   B= digitalRead(3);
  13. /*sem essas leituras não tem como dizer qual o valor inicial de A e de B
  14.  e por isso ele não conta direito sem elas */  
  15. }
  16.  
  17. void loop() {
  18.  
  19.  
  20.   int ia = i; //'ia' -> i Anterior. i->i atual
  21.  
  22.  
  23. // SE o valor lido de A for igual a B
  24.   if(A==B){
  25.     if(A!=digitalRead(2)){
  26.       i++;              //SE o A mudar de valor em relação ao estado anterior quer dizer que o angulo aumentou
  27.       A = digitalRead(2); // A é igualado ao valor da porta novamente
  28.     }
  29.     if(B!=digitalRead(3)){
  30.       i--;              //se for B que mudar de valor quer dizer que o angulo diminuiu
  31.       B = digitalRead(3); //B é igualado ao valor da porta novamente
  32.     }
  33.   }
  34.  
  35.     //se A for diferente de B
  36.   else{
  37.     if(A!=digitalRead(2)){
  38.       i--;                  // se A mudar de valor em relação ao valor lido anteriormente quer dizer que o angulo diminuiu
  39.       A = digitalRead(2);   // A é igualado ao valor da porta novamente
  40.     }
  41.     if(B!=digitalRead(3)){
  42.       i++;                  // se B mudar de valor em relação ao valor lido anteriormente quer dizer que o angulo aumentou
  43.       B = digitalRead(3);   // B é igualado ao valor da porta novamente
  44.     }
  45.   }
  46.  
  47.  
  48.     // essa função erve para printar o angulo só quando o valor do agulo atual for diferente do angulo anterior
  49.   if(i != ia){
  50.   Serial.print("\n\n\n\n\n\n\n\n\n\n pulsos:");
  51.   Serial.println(i);
  52. }
  53. }
Add Comment
Please, Sign In to add comment