Arduino – Pin Digitali e Analogici

Innanzitutto va detto che ciascuna scheda Arduino possiede alcuni pin utilizzabili con segnali digitali, ed altri con segnali analogici, va anche detto che la distinzione non è così netta quando poi programmiamo e ti mostrerò il perchè nel corso di questo articolo, prima facciamo una panoramica:

Pin Digitali: da 0 a 13 ( quadrato rosso )Pin Analogici: da 0 a 5 ( quadrato giallo/arancio )

Pin PWM: 3,5,6,9,10,11 ( quadrato verde )

Pin Digitali: da 0 a 13 ( indicato dalla serigrafia )Pin Analogici: da 0 a 5 ( indicato dalla serigrafia a0-a5 )

 

Pin PWM: 3,5,6,9,10,11

Pin Digitali: da 0 a 13 ( indicato dalla serigrafia d0-d13)Pin Analogici: da 0 a 5 ( indicato dalla serigrafia a0-a5 )

Pin PWM: 3,5,6,9,10,11

Quasi tutte le schede Arduino hanno pin digitali: sono pin che puoi utilizzare sia in modo INPUT (ingresso), per acquisire il valore di un pulsante ad esempio o di un interruttore a leva, sia in modo OUTPUT (uscita) per inviare segnali logici ad una scheda aggiuntiva, ad un led, ecc…
Siccome si tratta di impulsi di tipo digitale il valore che puoi ricevere/inviare è il classico 0/1 o in linguaggio Arduino LOW/HIGH.
Concentrati prima sulla acquisizione rilevare un valore LOW ( 0 ) equivale a dire che sul pin che stai controllando è arrivato un segnale logico basso 0v, viceversa ricevere HIGH ( 1 ) equivale a dire che il pin ha ricevuto un segnale logico alto  5v.
Il ragionamento appena fatto è valido anche in caso di utilizzo dl pin come OUTPUT, ossia per inviare segnali: se invii LOW ( 0 ) invierai un segnale logico basso 0v, se invii HIGH invierai un segnale logico alto 5v.

Un po’ di sintassi:

Per definire come utilizzeremo un dato pin puoi usare il seguente comando: pinMode(pin, modalità) dove pin indica il numero del pin che vogliamo settare con la modalità definita nel secondo parametro, modalità: INPUT o OUTPUT.
Per inviare un segnale al pin utilizza il comando: digitalWrite(pin,level) dove pin indica sempre il numero del pin a cui vogliamo inviare il segnale definito nel secondo parametro, level: LOW o HIGHT ( 0 o 1 ).

Per leggere un valore digitale, magari quello di un interruttore collegato a massa puoi utilizzare il comando pinMode con modalità INPUT, ed il comando digitalRead(pin) dove pin indica il numero del pin di cui vogliamo conoscere il valore.

Alcuni degli ingressi digitali presentano la sigla PWM, per la trattazione di cos’è un segnale PWM ti invito a leggere il mio articolo o anche il sito Wiki dedicato al PWM .
Ma vediamo cosa puoi farci, io ho sperimentato come pilotare dei servocomandi da modellismo oppure led con dissolvenza, scriverò presto degli articoli.
Il segnale PWM accetta come valori da 0 a 255, per ciascun valore varia il duty-cycle generato, ad esempio con il valore 0 otterrai un valore di duty-cycle dello 0% ossia sempre 0 in modo analogo a quello che avresti ottenuto utilizzando  digitalWrite(pin,LOW).
Un po’ di sintassi:

Ricorda sempre di settare la modalità del pin prima di eseguire l’invio dei comandi, in questo esempio ho utilizzato il pin 11 scrivendo: pinMode(11,OUTPUT) indico ad Arduino di utilizzarlo in modo OUTPUT ( come una uscita ); posso quindi inviare il mio segnale con duty-cycle al 50%: analogWrite(11,127), avrai notato che ho utilizzato analog Write anche se il pin 11 è un pin digitale, il motivo è che il tipo di segnale che desidero generare ha una variazione di valori da 0 a 255 e non solo 0 e 1, la funzione digitalWrite accetta come secondo parametro solo 0 e 1 oppure LOW e HIGH. Il valore 127 è esattamente a metà della mia scala ( 0 – 255 ) quindi il duty-cycle generato sarà del 50%.

Per comprendere meglio la questione duty-cycle ho preso l’immagine riportata sul sito Arduino contenete alcuni valori simbolo del duty-cycle in funzione del numero che specificherai:

 

Infine ci sono 6 pin dedicati ai segnali analogici, ma solo in input, ossia questi pin servono principalmente per acquisire dei segnali provenienti da sensori di tipo analogico: trimmer, potenziometri, fororesistenze, ultrasuoni, IR, ecc… ossia tutti quei sensori che possono generare un segnale analogico in funzione della loro stimolazione (luminosa, meccanica, ecc) se ad esempio volessi rilevare la distanza con un sensore IR dovrai utilizzare uno di questi pin.

Un po’ di sintassi:

Non è necessario settare questi pin con la modalità essendo solo pin di input Arduino sa già come utilizzarli.
Per leggere il valore presente sul pin 5, ad esempio, utilizza il comando: analogRead(pin) -> analogRead(5) il valore rilevato può variare da 0 a 1023, all’interno del range indicato ogni variazione del segnale sarà indicata con una variazione di tale valore.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Close
Navigation

Categories