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 | } |