La prima parte della guida riguardante i vari concetti della programmazione è conclusa, in questa seconda parte saranno riportate le funzionalità delle varie istruzioni utilizzate in Arduino IDE. Il primo articolo di questa seconda parte riguarderà le istruzioni Digital I/O, in particolar modo le funzioni digitalRead() , digitalWrite() e pinMode().
Prima di procedere con la spiegazione delle varie funzioni, è necessario esporre quali sono i parametri più utilizzati.
Le costanti INPUT, OUTPUT, HIGH e LOW
Le costanti INPUT e OUTPUT definiscono il comportamento da associare ai pin. Un pin digitale può essere configurato sia come INPUT che come OUTPUT.
Nel momento in cui si configura il pin come INPUT (poi si vedrà come), il pin entra in uno stato di alta impedenza (una porta in alta impedenza, come dice il nome, offre una elevata resistenza al passaggio della corrente ). In tale condizione il pin si presta meglio a leggere un sensore o un valore di tensione.
Nel momento in cui si configura il pin come OUTPUT (poi si vedrà come), il pin entra in uno stato di bassa impedenza (una porta in bassa impedenza, come dice il nome, offre una bassa resistenza al passaggio della corrente ). In tale condizione il pin può fornire una certa quantità di corrente e per tal motivo si presta meglio quando si utilizzano LED (per esempio).
Inoltre vi è data la possibilità di impostare il pin come INPUT_PULLUP. In tal caso saranno utilizzate le resistenze interne integrate nella board di Arduino e la tensione sarà impostata automaticamente su HIGH.
In genere, quando sul pin di input non viene specificato un valore di tipo HIGH o LOW, il pin resterà in uno stato elettrico indeterminato (detto floating) variabile senza soluzione di continuità tra zero e la massima tensione accettata. Questo comportamento indeterminato è incompatibile con la gestione di ingressi digitali, che richiedono invece un valore ben definito. Per tale ragione gli input digitali vengono sempre inizializzati, nella sezione iniziale del programma, con i valori di HIGH o LOW.
Il significato della costante HIGH varia a seconda se il pin sia impostato come INPUT o OUTPUT. Quando il pin è configurato come INPUT la tensione sarà HIGH nel momento in cui è presente sul pin una tensione maggiore di 3.0 V (collegato al 5 V).
Nel momento in cui il pin è configurato come OUTPUT vi sarà una erogazione della corrente pari a 5 V (o 3.3 V) sul pin in questione. In tale condizione vi è il passaggio di corrente e permette, per esempio, di accendere un LED collegato tramite un resistore.
Nel momento in cui il pin è configurato come OUTPUT vi sarà una erogazione della corrente pari a 0 V sul pin in questione. In tale condizione non vi è il passaggio di corrente e in tal caso, per esempio, vi è data la possibilità di inviare un segnale per azzerare l’alimentazione e spegnere un LED.
La funzione digitalRead()
La funzione digitalRead() legge il valore di tensione del pin digitale specificato. La sintassi è la seguente:
digitalRead(pin)
I valori di ritonro di questa funzione sono i valori HIGH (se presente tensione) oppure LOW (se la tensione è assente).
Solitamente il valore di ritorno viene assegnato a una variabile di tipo intero. Per esempio:
1 |
int val = digitalRead(pin); |
La funzione digitalWrite()
La funzione digitalWrite() imposta la stato del specifico pin su HIGH o LOW. La sintassi è la seguente:
digitalWrite(pin, value)
Il parametro pin corrisponde al numero del pin a cui è collegato il determinato dispositivo con la board di Arduino. Il parametro value può assumere i valori HIGH e LOW.
Vi sono diversi casi da esaminare. Se il pin è stato configurato come OUTPUT, nel momento in cui si utilizza la funzione digitalWrite() il valore della tensione per HIGH corrisponderà a 5 V (o 3.3 V), mentre per LOW sarà di 0 V.
Se il pin è stato configurato come INPUT (in genere con funzionalità pullup), nel momento in cui si utilizza la funzione digitalWrite() e il valore della tensione è HIGH si abiliterà un resistore interno pullup da 20k, sufficiente per illuminare debolmente un LED. Se il valore della tensione è impostato su LOW, il resistore interno pullup è disabilitato e non vi sarà il passaggio di corrente. Tratteremo il meccanismo di pullup in un articolo a parte, dal momento che la sua logica appare di difficile comprensione in prima battuta.
La funzione pinMode()
La funzione pinMode() configura il pin come INPUT o OUTPUT. La sintassi è la seguente:
pinMode(pin, mode)
Il parametro pin corrisponde al numero del pin a cui è collegato il determinato dispositivo con la board di Arduino. Il parametro mode può assumere i valori INPUT, INPUT-PULLUP e OUTPUT.
Link guida:
- Arduino IDE: come creare una libreria #10.2
- Arduino IDE: come installare una libreria #10.1
- Arduino IDE: che cos’è una libreria #10
- Arduino IDE: funzioni e LED RGB #9.1
- Arduino IDE: cosa sono le funzioni #9
- Arduino IDE: comporre canzoni con un array #8.1
- Arduino IDE: che cos’è un array o vettore #8
- Arduino IDE: led RGB e cicli for, while e do while #7
- Arduino IDE: ciclo for e differenze con while e do while #6
- Arduino IDE: ciclo while e do while #5
- Arduino IDE: accendere led con un bottone (if) #4.1
- Arduino IDE: la struttura condizionale IF #4
- Arduino IDE: operatori aritmetici, relazione e logici #3
- Arduino IDE: variabili, costanti e macro #2
- Arduino IDE: in che maniera si crea un programma? #1
- Arduino IDE: che cos’è e come funziona #0
Link utili
- Arduino UNO R3
- Elegoo UNO R3
- Arduino Starter Kit per principianti
- Elegoo Advanced Starter Kit
- Arduino Nano
Seguici per non perdere le prossime novità!