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.

Cortesemente, prima di inserire i commenti leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/tutorial-arduino-shield-io.html

16 comments

1 ping

Skip to comment form

    • Aldo on 24 febbraio 2013 at 19:22
    • Reply

    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 on 6 dicembre 2013 at 10:39
    • Reply

    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 on 28 novembre 2016 at 10:14
    • Reply

    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 on 5 dicembre 2016 at 10:16
    • Reply

    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 on 6 dicembre 2016 at 11:04
    • Reply

    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 on 12 dicembre 2016 at 09:57
    • Reply

    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 on 13 dicembre 2016 at 21:26
    • Reply

    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 on 14 dicembre 2016 at 16:03
    • Reply

    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

Your email address will not be published.

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