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.
Prima di inserire un commento, per favore, leggi il regolamento
17 pings
Skip to comment form
[…] un precedente articolo dedicato alla shield I/O hai visto come assemblarla passo passo e provato un primo sketch […]