Strona 1 z 1

Arduino impulsator

: 27 gru 2020, 21:08
autor: 251mz
Witam

Podłączyłem sobie impulsator 20sto impulsowy do arduino uno ze strony:
https://elty.pl/pl/p/Modul-z-enkoderem% ... Y-040/1155
I faktycznie ma 20 "kroków"

Niestety arduino liczy mi podwójnie ... :(
Tzn jedno cyknięcie to dolicza kolejne 2 zamiast 1.

Ma ktoś pomysł co robię źle?

Kod arduino ze strony http://howtomechatronics.com/tutorials/ ... e-arduino/

Kod: Zaznacz cały

/*     Arduino Rotary Encoder Tutorial
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
 #define outputA 6
 #define outputB 7

 int counter = 0; 
 int aState;
 int aLastState;  

 void setup() { 
   pinMode (outputA,INPUT);
   pinMode (outputB,INPUT);
   
   Serial.begin (9600);
   // Reads the initial state of the outputA
   aLastState = digitalRead(outputA);   
 } 

 void loop() { 
   aState = digitalRead(outputA); // Reads the "current" state of the outputA
   // If the previous and the current state of the outputA are different, that means a Pulse has occured
   if (aState != aLastState){     
     // If the outputB state is different to the outputA state, that means the encoder is rotating clockwise
     if (digitalRead(outputB) != aState) { 
       counter ++;
     } else {
       counter --;
     }
     Serial.print("Position: ");
     Serial.println(counter);
   } 
   aLastState = aState; // Updates the previous state of the outputA with the current state
 }

Re: Arduino impulsator

: 27 gru 2020, 21:45
autor: tuxcnc
251mz pisze:
27 gru 2020, 21:08
Ma ktoś pomysł co robię źle?
Niczego nie robisz źle, ten program liczy na każdym zboczu sygnału A, czyli dwa razy na impuls.
Jak znajdziesz lepszy program, to będzie liczył x4.
Nawiasem mówiąc, praktyczna wartość programu którego używasz jest znikoma.

Re: Arduino impulsator

: 27 gru 2020, 22:08
autor: 251mz
Cholera masz racje. Chyba oczy mi już zaciemnia....
Ostatni raz na C na atmega robiłem coś 10 lat temu...
Sugerowałem się tym że gościowi na filmie zlicza co 1 ....

Dlaczego znikoma?
Właśnie potrzebuje żeby co 1 kliknięcie mi dawał sygnał.
Nie chcę podłączać typowwgo enkodera optycznego a zwyły impulsator jak z linka do nawigowania w menu.

Re: Arduino impulsator

: 27 gru 2020, 22:25
autor: tuxcnc
251mz pisze:
27 gru 2020, 22:08
Dlaczego znikoma?
Właśnie potrzebuje żeby co 1 kliknięcie mi dawał sygnał.
Nie chcę podłączać typowwgo enkodera optycznego a zwyły impulsator jak z linka do nawigowania w menu.
Znikoma, bo to program musi pilnować impulsatora.
Przy bardziej skomplikowanym programie łatwo pogubić impulsy, szczególnie w Arduino, gdzie są takie cuda jak delay().
Natomiast sam impulsator jest w porządku, dopóki będziesz go używał do tego, do czego został wymyślony.

Re: Arduino impulsator

: 27 gru 2020, 23:06
autor: TOP67
Użyj przerwań i wlutuj kondensatory filtrujące (10-100 nF).

Re: Arduino impulsator

: 28 gru 2020, 06:25
autor: 251mz
Cudów jak delay nie używam :)