abbassare la "precisione" di analogRad

come posso fare a far leggere sempre lo stesso valore anche se varia entro un certo range
esempio pratico, voglio dividere la lettura su analogRead su A0 (classico potenziometro da 10 K)

in 99 numeri, esempio
se in entrata ho una lettura tra zero e 11 devo poter leggere sempre 1
se in entrata ho una lettura tra 12 e 22 devo poter leggere sempre 2
e avanti cosi

Usa la funziona map.
http://arduino.cc/en/Reference/Map

Lettura = map(analogRead(0), 0, 1023, 0, 99);

leo72:
Usa la funziona map.
map() - Arduino Reference

Lettura = map(analogRead(0), 0, 1023, 0, 99);

cercavo una cosa leggermente piu complicata, perche questa riga fa tutto in automatico,

mi interessava una cosa "manualmente" vediamo se riesco a spiegarmi,

esempio se A0 legge (tramite il potenziomento) tra 100 e 110 voglio assegnare il valore a una variabile,

o spiegata in altro modo,
voglio che un led si accende se il potenziomentro si trova tra 100 e 110

usa degli IF valore >= di 100 || valore <= 110 valore = x

Allora usa lo switch..case
http://arduino.cc/en/Reference/SwitchCase

Oppure una catena di if..else oppure non so. La domanda permette più soluzioni.

Però se i 100 possibili casi sono tutti diversi ti stai incasinando non poco la vita. :wink: Generalmente si cerca di ottimizzare il tutto proprio per rendere le cose le più semplici possibile.

E se usi sia la mappa dei 100 valori di lettura e poi usi anche lo switch case con lo stesso nome della mappa ?
Es. hai un valore letto di 100 che corrisponde alla mappa 1 di conseguenza corrisponde anche al caso 1 dello switch case ed all'interno scrivi la routine che ti serve. Credo venga un codice più leggibile rispetto a tante if. :slight_smile:
Non trovate che sia così ?

ok grazie mille a tutti e due,

tra la funzione map e IF valore >= di 100 || valore <= 110 valore = x

forse ho compreso il tutto :slight_smile: