Tutorial: Arduino Shield I/O

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.

Arduino shield I/O

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:

Stampato shield I/O

disponi prima i componenti più bassi e piccoli da maneggiare: i diodi

Diodi montati orizzontalmente

passa al montaggio dei diodi verticali:

diodi verticali

quindi ai diodi zener, uno di fianco all’altro:

Diodi zener

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:

Resistenze orizzontali

poi passa al montaggio delle resistenze verticali:

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:

Montare i transistor

monta il condensatore:

Montare un condensatore

e i led rossi e verdi:

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:

monta i relè e led

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:

Pin di connessione 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:

  1. commuta in seguenza di tutti i relè;
  2. legge in sequenza tutti i segnali digitali;
  3. 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.

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/tutorial-arduino-shield-io.html

16 commenti

1 ping

Vai al modulo dei commenti

    • Aldo il 24 Febbraio 2013 alle 19:22
    • Rispondi

    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!

    1. 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

    • federico il 6 Dicembre 2013 alle 10:39
    • Rispondi

    ciao mauro,
    volevo chiederti per sicurezza dove devo collegare sulla scheda il 5v e il gnd di un sensore ds18b20.
    grazie

    1. 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

    • Daniel il 28 Novembre 2016 alle 10:14
    • Rispondi

    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

    1. 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.

    • Daniel il 5 Dicembre 2016 alle 10:16
    • Rispondi

    Sono Daniel,non riesco a capire come fare il collegamento tra la shield è il motore.

    1. Ciao Daniel,
      questa shield ti permette di controllare un motore tramite relay.
      Dovrai collegare il motore come se usassi degli interruttori per il controllo.

    • Daniel il 6 Dicembre 2016 alle 11:04
    • Rispondi

    MA è possibile fare marcia o arresto di un MAT con questa shield

    1. Ciao Daniel,
      direi di si, dipende anche dal motore che vuoi controllare.

    • Daniel il 12 Dicembre 2016 alle 09:57
    • Rispondi

    Ciao, sono sempre io, ma devo proteggere Arduino se voglio alimentare un MAT? e se sI, cosa mi consigli?
    Grazie!

    1. 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.

    • Daniel il 13 Dicembre 2016 alle 21:26
    • Rispondi

    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

    1. 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.

    • Daniel il 14 Dicembre 2016 alle 16:03
    • Rispondi

    Quindi posso collegare i relè di arduino a altri relè che lavorano a 230v e poi questi ultimi collegarli al motore?

    1. 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

  1. […] un precedente articolo dedicato alla shield I/O hai visto come assemblarla passo passo e provato un primo sketch […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.