Skip to content
logo9minuti120x48
Menu
  • Home
  • Tutorial
    • Zaini
    • Stampa 3d
    • ebook
    • Informatica
  • Scritti
    • Racconti
    • Articoli
    • Temi
    • Storia
  • Video
  • Progetti
    • Progetto Carcere
    • Progetto Istruzione
    • Progetto Acque pulite
    • Progetto Tecnologia
  • Chi siamo
    • LinkTree
  • Privacy Policy
    • Cookie Policy (EU)
  • Blog
  • Donazioni
Menu
Shield multifunzione per Arduino

Shield multifunzione per Arduino, come farla funzionare

Posted on 22 Dicembre 201817 Agosto 2019 by Alessandro Oppo

Ben ritrovati su 9minuti.it, oggi vedremo la shield multifunzione per Arduino.

Si tratta di una shield, ovvero una scheda che ha la stessa forma di Arduino e che è fatta apposta per essere attaccata sopra i pin femmina.

Questa shield multifunzione per Arduino dispone di diversi sensori e ha un costo molto contenuto, il ché la rende sicuramente un buon investimento per chi è alle prime armi e vuole qualcosa di compatto da portare sempre dietro e con cui sperimentare.

L’ho presa per curiosità e perché mostrando spesso Arduino a persone completamente a digiuno dell’argomento pensavo che questa scheda multifunzione potesse essere la soluzione per non portarsi sempre dietro scatolette piene di cavi e sensori.

Shield multifunzione per Arduino
La shield multifunzione per Arduino

Indice

  • Pinout e sensori
  • Led e buzzer
  • Bottone
  • Display
  • Potenziometro
  • Display e potenziometro
  • Spegnere il display
  • Ce l’abbiamo fatta!

Pinout e sensori

La shield multifunzione per Arduino dispone dei seguenti sensori / moduli integrati.

  • Quattro led integrati sui pin 13, 12, 11 e 10
  • Un buzzer sul pin numero 3
  • Tre pulsanti fisici sui pin analogici A1, A2 e A3
  • Un potenziometro sul pin analogico A0
  • Quattro display a otto segmenti gestiti da due chip 74HC595. Il pinout del display è LATCH 4, CLK 7, DATA 8

PS. Quando l’ho comprata credevo fosse presente anche il sensore di temperatura lm35 mentre invece è solo previsto l’alloggiamento per esso (sai che roba).

Per il display useremo la libreria della shield multifunzione per Arduino che potete scaricare QUI.

Se non sapete installare una libreria vi consiglio di dare un occhio a QUESTO tutorial.

 

Led e buzzer

La shield multifunzione per Arduino ci mette a disposizione quattro led, vediamo come usarli.

Useremo anche il buzzer che si attiva esattamente come se fosse un led.

Attenzione perché sia i led che i buzzer verranno accesi in maniera invertita, ovvero saranno spenti con HIGH e accesi con LOW.

//Sketch scritto da Alessandro Oppo per 9minuti.it
void setup() {
  pinMode(13, OUTPUT); //led1
  pinMode(12, OUTPUT); //led2
  pinMode(11, OUTPUT); //led3
  pinMode(10, OUTPUT); //led4
  pinMode(3, OUTPUT);  //buzzer
}

void loop() {

  for (int i = 10; i < 14 ; i++) {
    digitalWrite(i, LOW);
    delay(1000);
  }

  for (int i = 10; i < 14 ; i++) {
    digitalWrite(i, HIGH);
    delay(1000);
  }

  digitalWrite(3, LOW);
  delay(1000);
  digitalWrite(3, HIGH);
}

2 , 7 – Dichiariamo i nostri pin digitali
12 – Ciclo for in cui cicleremo da 10 a 13
13 – Accendiamo di volta in volta il pin corrispondente al valore di i
14 – Delay di un secondo
17, 19 – Spegnamo il led con un ciclo for
22, 24 Accendiamo e spegnamo dopo un secondo il pin 3, su cui è collegato il buzzer.

Bottone

In questo sketch vedremo come accendere uno dei tre bottoni collegato alla entrata analogica A1.

Solitamente il bottone non viene utilizzato in questa maniera, ma qui è collegato così e non ci possiamo fare più di tanto.

//Sketch scritto da Alessandro Oppo per 9minuti.it
#define button A1
#define led 13

void setup(){
  pinMode(led, OUTPUT);
}

void loop() {
  
  int buttonState = analogRead(button);

  if (buttonState > 1){
    digitalWrite(led, HIGH);
  }
  else{
    digitalWrite(led, LOW);
  }
}

2, 3 – Define del led e del bottone
6 – Dichiariamo che il pin del led verrà utilizzato in upload
11 – Dichiarazione della variabile buttonState in cui assegneremo il valore della analog read sul pin analogico A1 (che è quello corrispondente al bottone)
13 – Se il valore è superiore a 1 il nostro bottone è premuto, quindi accendiamo il led.
16 – Altrimenti lo spegnamo.

Display

In questo sketch scritto per la shield multifunzione per Arduino vedremo come stampare sul display a quattro cifre i secondi utilizzando la libreria MFShield e la funzione millis().

//Sketch scritto da Alessandro Oppo per 9minuti.it
#include <MFShield.h>

MFShield mfs;
unsigned long t = 0;
int i = 0;

void setup(){

}

void loop()
{
  mfs.loop();
  mfs.display(i, false);

  if (millis() - t >= 100){
    t = millis();
    i++;
  }
}

2 – Includiamo la libreria MFShield.h
4 – Creiamo un oggetto di nome mfs e di tipo MFShield
5 – Creiamo una variabile chiamata t di tipo unsigned long in cui salveremo i millisecondi da quando Arduino è stato acceso.
6 – La viariabile intera i appena creata ci servira come contatore da stampare sul display.
14 – Chiamiamo il metodo loop() dell’oggetto mfs
15 – Il metodo display ha due parametri, il primo è il numero che vogliamo stampare sul display, il secondo indica se vogliamo tenere tutti e quattro i display accesi nel caso di numero più piccoli di quattro cifre.
Ad esempio, com’è adesso, se i valesse 45 si accenderebbero solamente i due display più a destra.
17 – Se i millisecondi attuali, meno i millisecondi salvati nella variabile t sono maggiori o uguali a 1000 (ovvero ad un secondo) allora entra nell’if
18 –  Salviamo in t i millisecondi attuali
19 – Aggiorniamo il nostro contatore di una unità.

Potenziometro

In questo sketch vedremo come usare il potenziometro colllegato all’entrata A0.

Il potenziomentro non è altro che una resistenza variabile ed è il parallelepipedo blu con una vitina di ottone sopra.

Girando la vitina cambiamo anche il valore della resistenza.

Quando la resistenza sarà superiore a 500 il nostro led posto sul pin 13 si accenderà.

//Sketch scritto da Alessandro Oppo per 9minuti.it
#define potentiometer A0
#define led1 13

void setup()
{
  pinMode(led1, OUTPUT);
  Serial.begin(9600);
}

void loop() {

  int readValue = analogRead(potentiometer);
  Serial.println(readValue);

  if (readValue > 500) {
    digitalWrite(led1, LOW);
  }
  else {
    digitalWrite(led1, HIGH);

  }
  delay(1000);
}

2, 3 – Define del potenziometro e del led1
7 – Dichiariamo di voler utilizzare il pin corrispondente al led1 in OUTPUT.
8 – Inizializziamo la porta seriale con baud rate di 9600.
13 – Salviamo all’interno della variabile readValue il valore letto sull’entrata analogica corrispondente al potenziometro
16 – Se il valore è maggiore di 500 allora accendiamo il led.
19 – Altrimenti lo spegnamo.
23 – Attendiamo un secondo

Display e potenziometro

In questo sketch uniamo quello che abbiamo imparato nei precedenti.

Ovvero leggeremo il valore del potenziometro ma lo stamperemo sul display a quattro cifre della nostra shield multifunzione per Arduino.

//Sketch scritto da Alessandro Oppo per 9minuti.it
#include <MFShield.h>

#define potentiometer A0
MFShield mfs;
unsigned long t = 0;
int readValue;

void setup()
{
}

void loop()
{
  mfs.loop();
  mfs.display(readValue, false);

  if (millis() - t >= 500) {
    t = millis();
    readValue = analogRead(potentiometer);
  }
}

Commenterò solamente le linee con delle modifiche rispetto ai due sketch precedenti.

16 – Anziché stampare il valore del contatore stampiamo la variabile che contienere il valore del nostro potenziometro.
20 – L’aggiornamento del display verrà effettuato ogni 500 millisecondi, ovvero ogni mezzo secondo.

Spegnere il display

Mi è capitato, passando da uno sketch all’altro, che il display rimanesse acceso seppur non vi fosse nulla che lo utilizzasse.

Per risolvere questo inconveniente è sufficiente caricare al volo questo sketch che contiene il comando per spegnerlo.

//Sketch scritto da Alessandro Oppo per 9minuti.it
#include <MFShield.h>

MFShield mfs;

void setup()
{
  mfs.showDisplay(false);
}

void loop()
{

}

Ce l’abbiamo fatta!

Eccoci giunti finalmente alla conclusione di questo tutorial che spero vi sia stato d’aiuto.

Se avete bisogno di aiuto rimango come sempre a disposizione.

Nel caso vogliate contribuire a supportare il blog vi invito come sempre a condividere l’articolo sui vostri social o a comprare attraverso i banner presenti sulla pagina.

Grazie di nuovo e al prossimo articolo!
Alessandro

Dammi un 5 virtuale, clicca like e condividi.

  • Fai clic qui per condividere su LinkedIn (Si apre in una nuova finestra)
  • Fai clic per condividere su Facebook (Si apre in una nuova finestra)
  • Fai clic qui per condividere su Twitter (Si apre in una nuova finestra)
  • Fai clic qui per condividere su Reddit (Si apre in una nuova finestra)
  • Fai clic per condividere su WhatsApp (Si apre in una nuova finestra)
  • Fai clic per condividere su Telegram (Si apre in una nuova finestra)
  • Fai clic per inviare un link a un amico via e-mail (Si apre in una nuova finestra)

Related

6 thoughts on “Shield multifunzione per Arduino, come farla funzionare”

  1. Roberto ha detto:
    27 Febbraio 2020 alle 4:51 pm

    Ciao Alessandro,
    ho acquistato anch’io oggi lo Shield un po’ per curiosità e un po’ per far vedere agli amici le potenzialità di Arduino (le stesse tue motivazioni, anche se l’hobby è in realtà parecchio più avanti).
    Secondo me il motivo per cui non ci sono i sensori di temperatura (li uso e costano pochi centesimi), non è il costo, ma è per non impegnare dei Pin che si vorrebbero usare per altri motivi.
    Grazie per i piccoli “sketch” “già fatti” utili per far giocare gli amici.
    Roberto
    Graz – Austria
    (Fuggito da Torino)

    Rispondi
    1. Alessandro Oppo ha detto:
      27 Febbraio 2020 alle 6:07 pm

      Ciao Roberto, mi fa piacere ti sia stato utile l’articolo!
      Riguardo al sensore hai certamente ragione e non avendone in casa non ho potuto provarli. Ora che mi hai ricordato di averla magari ne compro un paio dato che, finito l’articolo, non ho più utilizzato la shield!
      Alessandro

      Rispondi
  2. lucio ha detto:
    20 Settembre 2020 alle 4:20 pm

    Ciao Alessandro, ho una scheda multifunzione shield, ma per quante prove io faccia, non funzionano i display. Puoi darmi un aiuto, grazie

    Rispondi
    1. Alessandro Oppo ha detto:
      20 Settembre 2020 alle 4:35 pm

      Ciao Lucio, immagino la shield sia la stessa dell’articolo. Se così fosse, e con il codice che ho postato non dovesse andare, mi viene il dubbio che abbia il display rotto. :/

      Rispondi
      1. lucio ha detto:
        25 Settembre 2020 alle 5:12 pm

        grazie per la risposta, ne ho due , etutte presentano lo stesso problema, non vorrei che quando le ho messe su arduino abbiano fatto contatto l led sulla presa usb. se cosi fosse, non c’e modo che funzionino.
        grazie

        Rispondi
        1. Alessandro Oppo ha detto:
          2 Ottobre 2020 alle 10:52 pm

          Uhm strano! Ti consiglio di chiedere sul gruppo Telegram dedicato ad Arduino, magari qualcuno ha avuto il tuo stesso problema. :/

          Rispondi

Cosa ne pensi? Fammelo sapere con un messaggio Annulla risposta

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

Scoprici sui social

  • YouTube
  • Telegram
  • Facebook
  • RSS Feed

    Ultimi post

    • Buzzurretto e la scuola – Racconto breve
    • Il mio punto di vista sul progetto scuola
    • Di nuovo nuvole – Racconto breve
    • L’intelligenza artificiale, la forza della logica e la morale – ChatGPT
    • Videogrep, how to extract a certain word from a video (or more)
    • Brucerò tutto non appena è stato scritto – Racconto breve
    • C’è del lavoro da fare – Racconto breve

    Newsletter

    ©2023 9minuti | Design: Newspaperly WordPress Theme
    Manage Cookie Consent
    Usiamo cookie per ottimizzare il nostro sito web ed i nostri servizi.
    Cookie funzionali Sempre attivo
    The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
    Preferences
    The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
    Statistics
    The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
    Marketing
    The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
    Gestisci opzioni Gestisci servizi Gestisci fornitori Per saperne di più su questi scopi
    Visualizza preference
    {title} {title} {title}
     

    Caricamento commenti...