Le Funzioni digitalWrite, digitalRead, analogWrite e analogRead

Obiettivo: Imparare ad utilizzare le principali funzioni di Arduino



Arduino Porte (Input, Output, Digitali, Analogici)

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


A che valore di tensione corrisponde l'intero 818 letto attraverso la funzione analogRead

Correct! Wrong!

(818/1023)*4 = 1V

A che valore di tensione corrisponde l'intero 204 letto attraverso la funzione analogRead

Correct! Wrong!

(204/1023)*5 = 1V

A che valore di tensione corrisponde l'intero 511 letto attraverso la funzione analogRead

Correct! Wrong!

(511/1023)*5 = 2.5V

A che valore di tensione corrisponde l'intero 255 generato utilizzando la funzione analogWrite

Correct! Wrong!

(255/255)*5 = 5V

A che valore di tensione corrisponde l'intero 100 generato utilizzando la funzione analogWrite

Correct! Wrong!

(100/255)*5 = 1.96V

La funzione Valore = digitalWrite(11) è corretta?

Correct! Wrong!

La funzione digitalWrite non ha tipi di ritorno

La funzione digitalWrite(11,HIGH) è corretta?

Correct! Wrong!

La funzione analogWrite(11,1023) è corretta?

Correct! Wrong!

Il valore massimo di tensione per la funzione digitalWrite è pari a 255