Le Funzioni digitalWrite, digitalRead, analogWrite e analogRead
Obiettivo: Imparare ad utilizzare le principali funzioni di Arduino
Teoria:
Le principali funzioni utilizzate da Arduino per comunicare con il mondo esterno sono quattro e si dividono in base alla tipologia di azione:
- Lettura: utilizzate per acquisire i dati dai differenti sensori (luminosità, temperatura, umidità, etc)
- Scrittura: utilizzate per comandare i differenti attuatori (motori, buzzer, display, etc)
ed in base alla tipologia di segnale trattato:
- Digitale: utilizzate per trattare segnali digitali che possono assumere solamente valori logici (i.e., LOW e HIGH)
- Analogico: utilizzate per trattare segnali analogici con valori compresi tra 0 e 5V.
Nello specifico queste quattro funzioni sono così definite:
Codice:
- digitalWrite: Funzione utilizzata per comandare attuatori mediante una logica LOW/HIGH come ad esempio motori, led o buzzer. Questa funzione prevede l’impiego di due parametri di input: il PIN (0-13) ed il VALORE (LOW/HIGH)
digitalWrite(pin, valore);
- analogWrite: Funzione utilizzata per comandare attuatori mediante una logica analogica (valori compresi tra 0V e 5V) come ad esempio motori o led. Questa funzione prevede l’impiego di due parametri di input: il PIN (0-13) ed il VALORE (0-255). Nel caso specifico il valore 0 corrisponde a 0V mentre 255 a 5V. Per tutti gli altri VALORI si può attuare la proporzione lineare. (Ad esempio volendo generare un riferimento di tensione pari a 3Volt il VALORE di input può essere così calcolato: (3/5)*255. E’ importante considerare che i valori di tensione non sono “realmente” analogici ma generati attraverso la tecnica PWM. Inoltre, l’istruzione analogWrite può essere utilizzata solamente su alcuni pin digitali di output: i pin PWM (3,5,6,9,10,11).
analogWrite(pin, valore);
- digitalRead: Funzione utilizzata per leggere dati da sensori basati su una logica LOW/HIGH come ad esempio i pulsanti. Questa funzione prevede l’impiego di un parametro di input: il PIN (0-13) ed un parametro di output: il VALORE (LOW/HIGH) che viene restituito dalla funzione.
valore= digitalRead(pin);
- analogRead: Funzione utilizzata per leggere dati da sensori di tipo analogico (valori compresi tra 0V e 5V) come ad esempio fotoresistenze, sensori di temperatura, umidità etc. Questa funzione prevede l’impiego di un parametro di input: il PIN (A0-A5) ed un parametro di output: il VALORE (0-1023). Nel caso specifico il valore 0 corrisponde a 0V mentre 1023 a 5V. Per tutti gli altri VALORI si può attuare la proporzione lineare. (Ad esempio se viene letto il VALORE 512, la tensione di riferimento può essere così calcolata: (512/1023)*5.
valore = analogRead(pin);
Quiz:
.wq-quiz-1080 {
--wq-question-width: 100%;
--wq-question-color: #009cff;
--wq-question-height: auto;
--wq-bar-color: #00c479;
--wq-font-color: #444;
--wq-background-color: #f2f2f2;
}
A che valore di tensione corrisponde l'intero 818 letto attraverso la funzione analogRead
(818/1023)*4 = 1V
A che valore di tensione corrisponde l'intero 204 letto attraverso la funzione analogRead
(204/1023)*5 = 1V
A che valore di tensione corrisponde l'intero 511 letto attraverso la funzione analogRead
(511/1023)*5 = 2.5V
A che valore di tensione corrisponde l'intero 255 generato utilizzando la funzione analogWrite
(255/255)*5 = 5V
A che valore di tensione corrisponde l'intero 100 generato utilizzando la funzione analogWrite
(100/255)*5 = 1.96V
La funzione Valore = digitalWrite(11) è corretta?
La funzione digitalWrite non ha tipi di ritorno
La funzione digitalWrite(11,HIGH) è corretta?
La funzione analogWrite(11,1023) è corretta?
Il valore massimo di tensione per la funzione digitalWrite è pari a 255