View difference between Paste ID: kby25Tkt and 1aLgCxMi
SHOW: | | - or go back to the newest paste.
1-
int A, B, i=0;
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-
  // put your setup code here, to run once:
4+
 
5-
  pinMode(4, INPUT);
5+
  pinMode(2, INPUT); // entrada dos valores do encoder
6
  pinMode(3, INPUT);
7
  Serial.begin(38400);
8-
  //attachInterrupt(digitalPinToInterrupt(2), blink, CHANGE);
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-
  // put your main code here, to run repeatedly:
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-
  int ia = i;
15+
16
17
void loop() {
18-
  if(A==B){
18+
19-
    if(A!=digitalRead(4)){
19+
20-
      i++;
20+
  int ia = i; //'ia' -> i Anterior. i->i atual
21-
      A = digitalRead(4);
21+
22
23
// SE o valor lido de A for igual a B
24-
      i--;
24+
  if(A==B){ 
25-
      B = digitalRead(3);
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-
    if(A!=digitalRead(4)){
30+
      i--;				//se for B que mudar de valor quer dizer que o angulo diminuiu
31-
      i--;
31+
      B = digitalRead(3); //B é igualado ao valor da porta novamente
32-
      A = digitalRead(4);
32+
33
  }
34
35-
      i++;
35+
	//se A for diferente de B 
36-
      B = digitalRead(3);
36+
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-
  Serial.print("\n\n\n\n\n\n\n\n\n\n pulsos:");
41+
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
}