encoder va solo in una direzione

Dovrei utilizzare un encoder siccome il mio sketch non andava ho scaricato uno da internet il problema è che neanche questo funziona l'encoder mi va solo in una direzione......... tutti i piedini sono collegati......
questo è il codice

int val; 
 int encoder0PinA = 9;
 int encoder0PinB = 10;
 int encoder0Pos = 0;
 int encoder0PinALast = LOW;
 int n = LOW;

 void setup() { 
   pinMode (encoder0PinA,INPUT);
   pinMode (encoder0PinB,INPUT);
   Serial.begin (9600);
 } 

 void loop() { 
   n = digitalRead(encoder0PinA);
   if ((encoder0PinALast == LOW) && (n == HIGH)) {
     if (digitalRead(encoder0PinB) == LOW) {
       encoder0Pos--;
     } else {
       encoder0Pos++;
     }
     Serial.print (encoder0Pos);
     Serial.println ("");
   } 
   encoder0PinALast = n;
 }

ho controllato i collegamenti..
grazie a presto

Se e' un'encoder incrementale, ha due uscite sfasate fra loro di 90 gradi ... per rilevare in quale direzione gira, devi controllare quale dei due fronti arriva per primo ... se il fronte A arriva prima del fronte B, allora sta girando in un senso, altrimenti sta girando nell'altro ...

Tu leggi solo un'uscita, in quel modo, e non confronti i tempi ... almeno e' quello che mi sembra ...

EDIT: no, aspetta, errore mio, li controlli nell'if ...

Hai già visto questa pagina? --> Arduino Playground - RotaryEncoders

PaoloP: l'ho guardata, ma mi lascia perplesso quell'esempio ... e' un'impressione mia, o fa confronti sugli stati e non sul cambio di stato ? ... inoltre (ma potrei sbagliarmi), mi sembra che legga solo un'impulso ogni 4 dell'encoder (cioe', solo uno degli stati dei 4 possibili delle uscite di un'encoder a quadratura) ... o sbaglio ?

Non ho un encoder a casa e non ho mai fatto prove.
Prometto di inserirne uno nel prossimo ordine. :grin:

:stuck_out_tongue: :stuck_out_tongue: :stuck_out_tongue:

Quello che intendo dire e' che mi sembra che in quell'esempio si faccia il controllo di una sola delle 4 possibili cominazioni, cioe' controllare lo stato di B solo quando A e' HIGH ...

Gia a me che non sono un programmatore, viene in mente un possibile modo per sfruttare tutti e 4 i possibili stati ... voi che siete geni del software, dovreste averla gia risolta con un paio di righe di codice, massimo 3 (scherzo :stuck_out_tongue: XD)