Legge un valore di tensione applicato al piedino analogico 'pin' con una risoluzione di 10 bit. La funzione restituisce un valore compreso tra 0 e 1023.
value = analogRead(pin); // imposta 'value' uguale al // valore letto su 'pin' // dalla funzione analogRead
Nota: i pin analogici a differenza di quelli digitali non hanno bisogno di essere dichiarati come pin di INPUT o OUTPUT.
analogWrite(pin, value)
Cambia il duty cycle (nella funizione: 'value') della modulazione di ampiezza di impulso (PWM: Pulse Width Modulation) su uno dei 'pin' contrassegnati dall'etichetta PWM.
Sull'attuale Arduino UNO su cui è montato un ATmega 328, il PWM è abilitato sui piedini 3,5,6,9,10 e 11.
Il valore del duty cycle può essere specificato da una variabile o una costante con un valore compreso tra 0 e 255.
analogWrite(pin, value); // scrive il valore 'value' // sul 'pin' analogico
Un valore di 0 genera in uscita una tensione continua di 0 volt sul pin specificato nella funzione; un valore di 255 genera una tensione continua 5 volt sul pin specificato nella funzione. Per valori compresi tra 0 e 255, il valore in uscita varierà rapidamente tra 0 e 5 volt. Più alto sarà il valore di 'value' più spesso su 'pin' si avrà una tensione di 5 volt. Ad esempio un valore di 'value' pari a 64 genera un segnale in cui per tre quarti del periodo dell'onda il segnale sarà a 0 volt e per un quarto del periodo dell'onda sarà a 5 volt. Se 'value' è posto a 128 avremo un segnale che per metà del periodo sarà a 0 volte e per la restante metà del periodo sarà a 5 volt. Se 'value' è posto a 192 avremo 0 volt per un quarto del periodo e 5 volt per i restanti tre quarti del periodo.
Per approfondire l'argomento sul PWM leggete la lezione su maffucci.it: Arduino – lezione 06: modulazione di larghezza di impulso (PWM) corredata da esempi pratici e filmati.
Poiché analogWrite è una funzione hardware, sul pin avremo un onda quadra dopo una chiamata della funzione analogWrite e questa verrà continuativamente emessa in background fino alla successiva chiamata della analogWrite (o chiamata della digitalRead o digitalWrite sullo stesso pin).
L'esempio che segue legge un valore analogico da un pin di ingresso analogico, converte il valore dividendolo per 4, e fornisce un segnale PWM sul pin PWM specificato:
int led = 10; // al pin 10 è collegato un LED // in cui in serie è posta un // resistore da 220 Ohm int pin = 0; // inseriamo un potenziometro sul pin 0 int value; // valore che sarà letto void setup(){} // non è necessaria nessuna // configurazione void loop() { value = analogRead(pin); // imposta 'value' al // valore letto su 'pin' value /= 4; // dividendo per 4 si converte // il valore letto compreso tra // 0 e 1023 in un valore // compreso tra 0 e 255 analogWrite(led, value); // il valore del PWM // viene assegnato al led }