Overvalue analog input

Salve a tutti,
Dovrei leggere il valore di un sensore analogico, trasduttore di pressione, quindi da 0-1024 e convertirlo in valore da visualizzare in kg. Per calibrare il peso, ho solo 2 punti, cioé
0 kg = 950 valore sensore
1500kg = 50 valore sensore

Pensavo di usare la funzione map in questo modo:
int val = analogRead(0);
val = map(val, 50, 950, 0, 1500)

Il dubbio è se il peso supera i 1500kg, riuscirò a leggere comunque il valore?

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink:

Chiedo scusa, ho scritto la mia presentazione, spero sia esaustiva

Tranquillo, map non esegue alcun constrain, quindi puoi sborsare.
Però occhio che il tuo sensore sia realmente lineare e che comunque non hai molto margine,
Al massimo puoi arrivare poco oltre a 1500

0 kg = 950 valore sensore
1500kg = 50 valore sensore

Pensavo di usare la funzione map in questo modo:
int val = analogRead(0);
val = map(val, 50, 950, 0, 1500)

Fai un errore.

Se 950 ADC corrisponde a 0 kg e 50 ADC a 1500kg
il map() deve essere:

int val = analogRead(0);
val = map(val, 50, 950, 1500, 0)[/quote]

Il map() va oltre ai valori indicati. Il calcolo é giusto anche per valori inferiori a 50 e ulteriori a 950.

Ciao Uwe

Grazie a tutti
Proverò e vi farò sapere