Ciao a tutti vorrei applicare l'encoder per l'aumento di due variabili all'interno del codice...
int encoderPin1 = 2;
int encoderPin2 = 3;
volatile int lastEncoded = 0;
volatile long encoderValue = 0;
long lastencoderValue = 0;
int lastMSB = 0;
int lastLSB = 0;
void setup() {
Serial.begin (9600);
pinMode(encoderPin1, INPUT_PULLUP);
pinMode(encoderPin2, INPUT_PULLUP);
attachInterrupt(0, updateEncoder, CHANGE);
attachInterrupt(1, updateEncoder, CHANGE);
}
void loop(){
Serial.println(encoderValue);
}
void updateEncoder(){
int MSB = digitalRead(encoderPin1); //MSB = most significant bit
int LSB = digitalRead(encoderPin2); //LSB = least significant bit
int encoded = (MSB << 1) |LSB; //converting the 2 pin value to single number
int sum = (lastEncoded << 2) | encoded; //adding it to the previous encoded value
if(sum == 0b1101 || sum == 0b0100 || sum == 0b0010 || sum == 0b1011) encoderValue ++;
if(sum == 0b1110 || sum == 0b0111 || sum == 0b0001 || sum == 0b1000) encoderValue --;
lastEncoded = encoded; //store this value for next time
}
Ok mi spiego meglio, questo codice (quello base da cui prenderò spunto) mi serve per aumentare la variabile encoderValue.
Questo però non basta perchè mi servirebbe l'incremento di due variabili indipendenti.
Ovvero avvio arduino giro l'encoder e mi aumenta una variabile, premo il tasto di switch e mi aumenta l'altra variabile.
Qualcuno ha qualche idea? Vorrei una soluzione abbastanza pulita in teoria vorrei utilizzare la stessa funzione updateEncoder aggiungendo qualcosa