Tra le shield acquistate da robot-domestici.it c’era anche la I/O che ti permette di gestire 6 input analogici, 6 input digitali e 6 output digitali con relè a 12 volt. Sia gli input digitali sia gli output digitali dispongono anche di un led ciascuno come indicatore di stato.
Il vanttaggio di utilizzare la scheda I/O è che non devi preoccuparti di gestire componenti elettronici aggiuntivi o complessi sketch.
Per utilizzare un motore nel tuo progetto di un robot o per accendere di strisce di led o per acquisire i segnali esterni, sia analogici sia digitali, tutta l’elettronica che ti occorre è già sulla scheda.
In internet ci sono numerosi shield di esempio per utilizzarla, questo articolo inizia dall’assemblaggio e continua con un primo semplice sketch di test.
L’assemblaggio è molto semplice, occorre il kit della shield, un saldatore standard, dello stagno e un po’ di pratica, non ci sono componenti smd o particolarmente piccoli, ci sono solo molti componenti da assemblare, ti occorrerà qualche ora per eseguire un buon lavoro.
Inizia dall’osservazione della basetta:
disponi prima i componenti più bassi e piccoli da maneggiare: i diodi
passa al montaggio dei diodi verticali:
quindi ai diodi zener, uno di fianco all’altro:
A questo punto puoi passare al montaggio delle resistenze orizzontali, anche queste sono componenti piatti e quindi più facili da maneggiare e saldare in questa fase:
poi passa al montaggio delle resistenze verticali:
e quindi il momento di passare ai componenti più alti e che possono essere inserit facilemnte anche se non in ordine preciso, io ti consiglio di seguire comunque un ordine per semplificarti il montaggio:
monta il condensatore:
e i led rossi e verdi:
manca poco, monta i relè ed i morsetti a cui collegare i contatti dei sensori per le entrate analogiche e digitali e gli attuatori sulle uscite digitali:
In ultimo, anche perchè prima avrebbe complicato il montaggio e infastidito tutta l’operazione, monta i contatti che consentono alla shield di collegarsi ad Arduino:
Ricorda che la shield si alimenta attraverso Arduino ricavando i +5v e la massa direttamente dal regolatore montato su Arduino e i 12v dall’alimentazione diretta di Arduino attraverso il pin Vin, questo significa che devi alimentare il tutto con una tensione di +12v per consentire ai relè di funzionare adeguatamente.
Prima di scrivere uno sketch di test è importante sapere che i pin digitali sono stati divisi 6 da utilizzare come INPUT e 6 da utilizzare come OUTPUT, per semplicità di realizzazione della sheda il progettista ha definito che i primi 6 pin digitali di Arduino (2-7) fossero utilizzabili come input e che i pin da 8 a 13 fossero dedicati all’uso come OUTPUT.
Se ti stai chiedendo come mai abbia evitato di utilizzare il pin 0 e 1 di Arduino è perchè tendenzialmente si evita di utilizzare questi pin in quanto riservati alla comunicazione seriale tra Arduino e il suo IDE; quindi a meno che non sia strettamente necessario utilizzarli si preferisce lasciarli liberi o impiegarli per la comunicazione seriale in alcuni shield, come vedrai nei prossimi articoli.
Lo sketch di esempio fa eseguire alla shield I/O:
- commuta in seguenza di tutti i relè;
- legge in sequenza tutti i segnali digitali;
- legge in sequenza tutti i segnali analogici;
Per verificare che la lettura sia corretta prendiamo come riferimento i morsetti non collegati a nulla, proveremo in un prossimo sketch ad eseguire comandi mirati e confrontare i segnali letti prima e dopo una operazione con un pulsante ad esempio.
Ecco lo sketch:
int in=0;
int out=0;
int an=0;
long interval = 1000; // interval at which to blink (milliseconds)
void setup() {
Serial.begin(9600);
for (int in=2; in<=7; in++){
pinMode(in, INPUT);
}
for (int out=8; out<=13; out++){
pinMode(out, OUTPUT);
}
Serial.println("Setup Ok");
}
void loop()
{
for (int out=8; out<=13; out++){
digitalWrite(out, HIGH);
delay(interval);
}
delay(interval);
for (int out=8; out<=13; out++){
digitalWrite(out, LOW);
delay(interval);
}
for (int in=2; in<=7; in++){
Serial.print(in);
Serial.print(" = ");
Serial.println( digitalRead(in) );
delay(interval);
}
delay(interval);
for (int an=0; an<=5; an++){
Serial.print(an);
Serial.print(" = ");
Serial.println( analogRead(an) );
delay(interval);
}
delay(interval);
}
Buon divertimento.


















2 comments
1 ping
Aldo
24 febbraio 2013 a 19:22 (UTC 2) Link to this comment
Ciao!
Grande guida (questa e non solo), complimenti.
Un’unica domanda, probabilmente banale, ma sono alle prime armi. Per il montaggio dei LED rossi e verdi, come faccio a capire il corretto posizionamento per rispettare la polarità?
Tenendo il circuito con gli ingressi analogici e digitali sul lato destro, mi sembra che:
1) per i LED Verdi l’anodo vada a destra
2) per i Led Rossi l’anodo vada in basso
Se ho detto una “castroneria” chiedo venia, ma come detto, sono alle prime armi.
Grazie!
Mauro Alfieri
25 febbraio 2013 a 11:21 (UTC 2) Link to this comment
Ciao Aldo,
grazie per i complimenti.
Non hai scritto una castroneria, effettivamente dalla serigrafia sulla scheda è difficile capire il verso dei led.
Io a suo tempo ho seguito lo schema fornito dal produttore della shield e seguito la pista negativa sul circuito.
Mauro
Mauro Alfieri » Blog Archive » Tutorial: Shield I/O comandare luci esterne
23 aprile 2012 a 09:54 (UTC 2) Link to this comment
[...] un precedente articolo dedicato alla shield I/O hai visto come assemblarla passo passo e provato un primo sketch [...]