Arduino: Ingressi e uscite digitali

pinMode (pin, mode)

Utilizzato in void setup (), serve per configurare un determinato pin e stabilire se deve essere un ingresso o un’uscita.

pinMode (pin, OUTPUT); // imposta il ‘pin’ come uscita

I pin digitali di Arduino di default sono pin di ingresso se non sono esplicitamente dichiarati come ingressi con l’istruzione pinMode (). I pin configurati come ingressi, si dice, hanno un’alta impedenza.

All’interno dell’integrato Atmega sono già presenti per ogni pin le resistenze di pull-up da 20KQ che abilitati via software permettono di settare i pin come ingresso. Le istruzioni che permettono ciò sono le seguenti:

pinMode (pin, INPUT); // imposta il ‘pin’ come ingresso
digitalWrite (pin, HIGH); // attiva il pin a livello alto con la resistenza di pull-up

Le resistenze di pull-up sono normalmente utilizzate per collegare gli ingressi come interruttori. Si noti che nell’esempio di cui sopra non viene configurato un pin come uscita, è semplicemente un modo per attivare il pull-up interno.

I Pin configurati come OUTPUT sono detti a bassa impedenza e sono in grado di fornire 40 mA (milliampere) di corrente ad altri dispositivi o circuiti. Questo è una corrente sufficiente per accendere un LED (non dimenticare di collegare una resistenza in serie), ma non è una corrente sufficiente per comandare la maggior parte di relè, bobine, o motori.

I cortocircuiti sui piedini di Arduino o l’eccessiva corrente possono danneggiare o distruggere il pin di uscita, o danneggiare l’intero chip Atmega. È spesso una buona prassi collegare il pin di uscita ad un dispositivo esterno collegando in serie una resistenza da 470Q o 1KQ.

digitalRead (pin)

L’istruzione permette di leggere lo stato di un pin di input e restituisce un valore HIGH se al pin è applicato un tensione o un valore LOW se non è applicato nessun segnale. Il pin può essere specificato come una variabile o costante (0-13).

Value = digitalRead (Pin); // assegna a ‘value’ il valore prelevato dal pin

digitalWrite (pin, valore)

Attiva o disattiva un pin digitale, quindi l’istruzione pone il pin di uscita a livello logico HIGH o LOW. Il pin può essere specificato come una variabile o una costante (0-13).

digitalWrite (pin, HIGH); // imposta il ‘pin’ a livello alto

Il seguente esempio legge un tasto collegato a un ingresso digitale e gira su un LED connesso a un’uscita digitale quando il pulsante è stato premuto:

int led = 13; // il led è collegato al pin 13
int pin = 7; // il pulsante è collegato al pin 7
int value = 0; // viene definita una variabile per memorizzare il valore letto

void setup ()
{
pinMode (led, OUTPUT); // imposta il pin 13 come uscita
pinMode (pin, INPUT); // imposta il pin 7 come input
}

void loop ()
{
value = digitalRead (pin); // imposta ‘value’ pari al segnale prelevato dal pin
digitalWrite (led, value); // imposta il led al valore della variabile value
}