Utilizzato all'interno del void setup(), consente di configurare un determinato pin e stabilisce se deve essere un pin di INPUT o di OUTPUT.
pinMode(pin, OUTPUT); // imposta 'pin' come output
I pin digitali di Arduino sono per default impostati come pin di INGRESSO, perciò non è necessario dichiararli esplicitamente come input con la funzione pinMode(). Nel caso si debba utilizzarli come pin di uscite è indispensabile impostare il pin come OUTPUT con il comando pinMode(pin, OUTPUT). I pin configurati come input si dice che sono in uno stato di alta impedenza.
Il processore Atmega presente sulla scheda Arduino è dotata, sui ogni piedino di ingresso digitale, di una resistenza di pull-up da 20KOhm che abilitata via software consente di impostare il pin come input. Le istruzioni sono le seguenti:
pinMode(pin, INPUT); // imposta 'pin' come input digitalWrite(pin, HIGH); // attiva la resistenza di pull-up, //'pin' viene impostato HIGH
Le resistenze di pull-up vengono normalmente utilizzate per connettere gli input come interruttori.
Si noti che nell'esempio sopra non viene configurato un pin come output, è 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) ad altri dospositivi o circuiti. Questa è una corrente sufficiente per accendere un LED (non dimenticate di inserire in serie una resistenza), ma non è una corrente sufficiente per pilotare la maggior parte dei relè, bobine o motori.
I cortocircuiti sui piedini di Arduino possono danneggiare o distruggere i pin di output o danneggiare l'intero chip Atmega. Quando si ha la necessità di utilizzare i pin come output per collegare dispositivi esterni è buona prassi inserire in serie al pin un resistore da 470 Ohm o 1 KOhm.
digitalRead(pin)
Legge lo stato di uno specifico pin digitale ed il valore restituito può essere HIGH o LOW. Il 'pin' può essere specificato come una variabile o una costante (0-13).
value = digitalRead(Pin); // imposta 'value' al valore // letto sul pin
digitalWrite(pin, value)
Pone a livello HIGH o LOW l'uscita digitale 'pin'. Il 'pin' può essere specificato come una variabile o una costante (0-13).
L'esempio che segue legge un pulsante collegato ad un ingresso digitale e visualizza su un LED, connesso ad una uscita digitale, quando il pulsante viene premuto:
int led = 13; // il LED è connesso all'uscita // digitale 13 int pin = 7; // il pulsante è collegato al pin //digitale 7 int value = 0; // variabile per memorizzare il valore //letto void setup() { pinMode(led, OUTPUT); // imposta il pin 13 come OUTPUT pinMode(pin, INPUT); // imposta il pin 7 come INPUT } void loop() { value = digitaRead(pin); // imposta 'value' uguale // al valore letto su 'pin' digitalWrite(led, value); // imposta 'led' al valore // della variabile 'value' }