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.
16 commenti
1 ping
Vai al modulo dei commenti
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!
Autore
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
ciao mauro,
volevo chiederti per sicurezza dove devo collegare sulla scheda il 5v e il gnd di un sensore ds18b20.
grazie
Autore
Ciao Federico,
che tipo di sensore è?
Qual’è il protocollo di comunicazione utilizzato?
Hai verificato che il produttore non abbia rilasciato della documentazione in merito ?
Mauro
Ciao, dovrei fare un lavoro, ovvero comandare un motore con lo shield arduino i/o, potresti aiutarmi dandomi qualche consiglio?
Sono alle prime armi e mi trovo in difficoltà. Grazie in aniticipo
Autore
Ciao Daniel,
scrivi pure cosa non ti è chiaro dell’utilizzo di questa shield dopo averne compreso il funzionamento descritto nello sketch.
Io cercherò di aiutarti rispondendoti.
Se il problema non riguarda la scheda ma altre info puoi cercarle nel blog e verificare tra articoli e commenti se abbia già pubblicato qualche esempio che puoi adattare a questa shield per risolvere il tuo problema.
Sono Daniel,non riesco a capire come fare il collegamento tra la shield è il motore.
Autore
Ciao Daniel,
questa shield ti permette di controllare un motore tramite relay.
Dovrai collegare il motore come se usassi degli interruttori per il controllo.
MA è possibile fare marcia o arresto di un MAT con questa shield
Autore
Ciao Daniel,
direi di si, dipende anche dal motore che vuoi controllare.
Ciao, sono sempre io, ma devo proteggere Arduino se voglio alimentare un MAT? e se sI, cosa mi consigli?
Grazie!
Autore
Ciao Daniel,
penso tu volessi scrivere Mot ( abbreviativo di motore ), non so cosa sia un MAT ..
Se usi questa shield devi far attenzione alle sole correnti spurie generate dai motori, se non sai cosa siano ti consiglio la lettura di qualche manuale base di elettronica.
Mat sta per motore asincrono trifase, io so che i relè possono resistere al massimo 0.5 A e 125V mi pare, ma io ho 230 volt e non so cosa fare! Daniel
Autore
Ciao Daniel,
devi cambiare modello di scheda o interporre dei relay differenti, anche se con i motori trifase il discorso penso sia più complesso, io non sono un esperto di tali tecnologie.
Quindi posso collegare i relè di arduino a altri relè che lavorano a 230v e poi questi ultimi collegarli al motore?
Autore
Ciao Daniel,
in linea teorica puoi mettere in cascata dei relay, come lo fai determina un corretto funzionamento o meno del sistema.
Evita di far rientrare in arduino qualsiasi tensione superiore ai 5v
[…] un precedente articolo dedicato alla shield I/O hai visto come assemblarla passo passo e provato un primo sketch […]