venerdì 23 marzo 2012

Arduino e Rotary Encoder...

L'encoder rotativo, in inglese Rotary Encoder, è una specie di potenziometro, che invia un segnale se girato in senso orario e un altro segnale se girato in senso antiorario. Spesso c'è anche la funzione che se si preme, agisce anche come bottone, per cui è adatto per impostare ad esempio un orologio.
In questo post vedremo come utilizzarlo con Arduino.
Innanzitutto va montato in questo modo:

A questo punto possiamo caricare il nostro sketch:

 int val;
 int encoder0PinA = 2;
 int encoder0PinB = 3;
 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.print ("/");
   }
   encoder0PinALast = n;
 }

Se tutto va bene, aprendo il nostro Serial Monitor, agendo sull'encoder, dovremmo vedere dei numeri che aumentano o diminuiscono ad ogni click sull'encoder.

Nessun commento:

Posta un commento