Calibrazione

Ho ordinato il mio Arduino Uno, a breve arriva ]:smiley: (Dopo 8 euro di spedizioni voglio vedere se non arriva :sweat_smile:)

Intanto mi sto guardando un pò la parte di programmzione...
Non ho ben capito a cosa serve la procedura di Calibrazione. :roll_eyes:

Da quanto ho letto, dato un input analogico, Arduino assegna a questo input un valore fra 0 e 1023.
In uscita, invece, il valore assegnato può variare da 0 a 255. Per questo c'è bisogno di un rimappaggio del valore.

Fin quì ci sono...
Quì un esempio, dove a seconda del valore assunto dal potenziometro cambia la luminosità del led. In questo esempio NON c'è una procedura di calibrazione.

Invece, in quest'altro esempio viene descritta la procedura di calibrazione, fra parentesi dice per potenziometri e sensori...

Ora se Arduino assegna "automaticamente" (anche se non ho la minima idea di come faccia) un valore fra 0 e 1023, perchè fare questa procedura per "restringere" il range?
A cosa serve? Quando si usa? E' forse necessaria solo per i sensori?

Se togliamo la parte di calibrazione, e cambiamo questa istruzione:

sensorValue = map(sensorValue, sensorMin, sensorMax, 0, 255);

In

sensorValue = map(sensorValue, 0, 1023, 0, 255);

Non funziona ugualmente?

Grazie XD

Scusate per la domanda banale, e sicuramente trattata molte volte, ma ho provato a cercare e non ho trovare risposte :.

ciao,

sostanzialmente la funzione map serve per fare una proporzione senza doversi scrivere la formuletta. La calibrazione con map() è una sorta di taratura.

Gli ingressi analogici vanno da 0 a 1023 perchè l'ADC ha 10 bit di risoluzione, mentre le uscite analogiche vanno da 0 a 255 perchè il timer per il pwm è settato a 8 bit. Detto questo, se tu vuoi comandare direttamente con un ingresso un'uscita devi far coincidere le due scale e giustamente usi una proporzione (o più scaltramente dividi per 4).

Nell'esempio del link sulla calibrazione ti fanno vedere che puoi usare 2 variabili a cui assegni i valori limite, restando sempre su quell'esempio: è difficile che una fotoresistenza scenda sotto una certa soglia quando è completamente al buio, facciamo 300 e salga sopra un'altra soglia quando è pienamente illuminata, 900. Allora usi map() con questi due valori per illuminare completamente il led quando la fotoresistenza è a 900 e per spegnerlo completamente quando legge 300.

[quote author=Federico Vanzati link=topic=88224.msg662806#msg662806 date=1327261226]
ciao,

sostanzialmente la funzione map serve per fare una proporzione senza doversi scrivere la formuletta. La calibrazione con map() è una sorta di taratura.

Gli ingressi analogici vanno da 0 a 1023 perchè l'ADC ha 10 bit di risoluzione, mentre le uscite analogiche vanno da 0 a 255 perchè il timer per il pwm è settato a 8 bit. Detto questo, se tu vuoi comandare direttamente con un ingresso un'uscita devi far coincidere le due scale e giustamente usi una proporzione (o più scaltramente dividi per 4).

Nell'esempio del link sulla calibrazione ti fanno vedere che puoi usare 2 variabili a cui assegni i valori limite, restando sempre su quell'esempio: è difficile che una fotoresistenza scenda sotto una certa soglia quando è completamente al buio, facciamo 300 e salga sopra un'altra soglia quando è pienamente illuminata, 900. Allora usi map() con questi due valori per illuminare completamente il led quando la fotoresistenza è a 900 e per spegnerlo completamente quando legge 300.
[/quote]Ciao,

Grazie mille per la spiegazione, ora ho capito XD