Carissimi, sono alle prese con la lettura di un potenziometro:
con il seguente codice ed un semplice potenziometro da 10K (nuovo di stecca), collegato correttamente alla porta analogica (0) di un Arduino Mega 2560 Rev.3, alimentato via USB dal PC, è CHIARO che, ruotando LENTAMENTE il potenziometro, (e aggiustandolo INTENZIONALMENTE), si arriva a quel SOTTILE PUNTO in cui il potenziometro genera QUEL VALORE DI TENSIONE che sarebbe in mezzo fra, ad esempio, 64 e 65, generando, sul serial monitor, una lettura instabile della variabile 'numero' (vedi codice esempio) (esso infatti fluttuerà fra 2 e 3).
Dal momento che vorrei realizzare una capillare lettura stabile di 1024/8=128 valori dati dal convertitore, è chiara la FITTA RETE di 'if else' (vedi codice esempio) che dovrò scrivere nel codice e quindi quanta confusione questo codice genererebbe sul serial monitor...
(più è fitta la rete, più spesso verrà lasciato il potenziometro a cavallo dei famosi due valori...)
L'unico modo che ho trovato per risolvere questo problema è il Sovracampionamento (con Vref di 5V) a 11 o addirittura a 12bit. Tuttavia NON so come applicare detta tecnica al codice che vi ho esposto.
Qualcuno può aiutarmi? Ovvero, come posso sovracampionare la lettura di questo potenziometro?
Grazie, Ruben
// Codice by Tonetta Ivan(Ruben) in data 19.03.2013
byte numero = 0;
void setup() { Serial.begin(9600); }
void loop() {
int valore = (analogRead(0)/8); // Lettura del valore del potenziometro
if (valore <= 32) { numero = 1; }
else if (valore > 32 && valore <= 64) { numero = 2; }
else if (valore > 64 && valore <= 96) { numero = 3; }
else if (valore > 96 && valore <= 128) { numero = 4; }
Serial.println(numero); // invio valori al serial monitor per la stampa
delay(10); // attendi 10ms
}