Arduino - Shield Multi-Fonctions

Ce tutoriel vous explique comment utiliser Arduino avec le Shield Multi-Fonctions. En détail, nous allons apprendre :

Arduino Multi-Function Shield

Regardez ce tutoriel vidéo étape par étape démontrant tous les exemples du Shield Multi-Fonctions. Notez que la vidéo montre l'Arduino Uno R4, mais cela fonctionne de manière identique pour l'Arduino Uno R3 :

Matériel Requis

1×Arduino Uno R3
1×Câble USB 2.0 type A/B (pour PC USB-A)
1×Câble USB 2.0 type C/B (pour PC USB-C)
1×DIYables Multi-Function Shield
1×Recommandé: Shield à bornier à vis pour Arduino Uno
1×Recommandé: Sensors/Servo Expansion Shield for Arduino Uno
1×Recommandé: Shield plaque d'essai pour Arduino Uno
1×Recommandé: Boîtier pour Arduino Uno
1×Recommandé: Kit plaque de base prototypage et plaque d'essai pour Arduino Uno

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables STEM V3 (Arduino inclus)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À Propos du Shield Multi-Fonctions

Le Shield Multi-Fonctions est un shield d'apprentissage et de prototypage tout-en-un conçu pour les cartes Arduino Uno et Mega. Il intègre plusieurs composants courants sur une seule carte, éliminant ainsi le besoin de câblage complexe.

Le shield comprend les composants suivants :

  • Afficheur 7 Segments à 4 Chiffres : Piloté par un registre à décalage 74HC595. Affiche des chiffres, du texte (A–Z) et des caractères spéciaux comme le symbole degré (°).
  • 3 Boutons Poussoirs (S1, S2, S3) : Actifs BAS avec résistances de tirage internes. Utiles pour la saisie utilisateur et la navigation dans les menus.
  • 4 LEDs (D1, D2, D3, D4) : Actives BAS. Peuvent être allumées, éteintes, basculées ou faire clignoter indépendamment ou toutes ensemble.
  • Buzzer : Actif BAS. Peut produire des bips de durée configurable avec délai optionnel.
  • Potentiomètre : Connecté à la broche analogique A0. Lit une valeur de 0 à 1023 (ou pourcentage 0–100%).
  • Capteur de Température LM35 : Connecté à la broche analogique A4. Lit la température en Celsius. Nécessite de retirer le cavalier J1.

Pour les cartes basées sur le facteur de forme Arduino Uno (comme l'Arduino Uno ou Mega), le Shield Multi-Fonctions se monte directement sur la carte, ce qui en fait une solution vraiment plug-and-play — aucune breadboard ni fils de liaison nécessaires. Pour les cartes au facteur de forme Uno mais avec des noms de broches différents (comme le DIYables ESP32-S3 Uno), la bibliothèque prend en charge la correspondance personnalisée des broches.

Correspondance des Broches

Function Arduino Pin Function Arduino Pin
LED D1 13 Button S1 A1
LED D2 12 Button S2 A2
LED D3 11 Button S3 A3
LED D4 10 Potentiometer A0
Buzzer 3 LM35 Temp Sensor A4
Display LATCH 4
Display CLOCK 7
Display DATA 8
Multi-Function Shield Pinout

Schéma de Câblage

Connecter l'Arduino au Shield Multi-Fonctions est simple. Il suffit d'empiler le Shield Multi-Fonctions sur l'Arduino, en s'assurant du bon alignement avec les broches de connexion, comme illustré dans l'image ci-dessous.

Arduino Multi-Function Shield wiring diagram

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Installation de la Bibliothèque

  • Connectez la carte Arduino à votre ordinateur avec un câble USB.
  • Ouvrez l'Arduino IDE, sélectionnez la bonne carte et le bon port.
  • Accédez à l'icône Bibliothèques dans la barre de gauche de l'Arduino IDE.
  • Recherchez "DIYables_MultiFuncShield", puis trouvez la bibliothèque DIYables_MultiFuncShield par DIYables.
  • Cliquez sur le bouton Installer pour installer la dernière version de la bibliothèque.
Arduino Multi-Function Shield library

Remarque : Cette bibliothèque est autonome, sans dépendances externes.

Structure de Base

Chaque sketch utilisant le Shield Multi-Fonctions suit cette structure de base :

#include <DIYables_MultiFuncShield.h> void setup() { MFS.begin(); // Initialize all components } void loop() { MFS.loop(); // Must be called every loop iteration }

MFS.begin() initialise tous les composants (afficheur, boutons, LEDs, buzzer). MFS.loop() met à jour le multiplexage de l'afficheur, l'antirebond des boutons, le clignotement des LEDs et la temporisation du buzzer. Les deux appels sont obligatoires.

Code Arduino - Afficheur 7 Segments

Le code suivant montre comment afficher des entiers, des flottants, du texte et des caractères spéciaux sur l'afficheur 7 segments à 4 chiffres.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-multi-function-shield */ /* * Multi-Function Shield - Display Example * * Cycles through display features every 3 seconds: * 1. Integer number * 2. Integer with leading zeros * 3. Float number * 4. Text string with letters * 5. Text string with dot * 6. Degree symbol + C (special chars) * 7. Dashes * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> uint8_t step = 0; unsigned long lastUpdate = 0; void setup() { MFS.begin(); } void loop() { MFS.loop(); if (millis() - lastUpdate >= 3000) { lastUpdate = millis(); switch (step) { case 0: // Integer: " 42" MFS.display.print(42); break; case 1: // Integer with leading zeros: "0042" MFS.display.print(42, true); break; case 2: // Float with 2 decimals: "3.14" MFS.display.print(3.14, 2); break; case 3: // Text string: "HELP" MFS.display.print("HELP"); break; case 4: // Text with dot: "Ab.Cd" MFS.display.print("Ab.Cd"); break; case 5: // Degree + C using special chars: "25°C" MFS.display.clear(); MFS.display.setNumber(1, 2); MFS.display.setNumber(2, 5); MFS.display.setChar(3, SegChars::DEGREE); MFS.display.setChar(4, SegChars::C); MFS.display.show(); break; case 6: // Dashes: "----" MFS.display.print("----"); break; } step = (step + 1) % 7; } }

Étapes Rapides

  • Empilez le Shield Multi-Fonctions sur la carte Arduino.
  • Connectez la carte Arduino à votre ordinateur avec un câble USB.
  • Ouvrez l'Arduino IDE, sélectionnez la bonne carte et le bon port.
  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
  • Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.

L'afficheur passe par 7 modes toutes les 3 secondes : entier, zéros non significatifs, flottant, texte, texte avec point, symbole degré et tirets.

Résumé de l'API Afficheur

Method Description Example
print(int) Display integer MFS.display.print(42)
print(int, true) Integer with leading zeros MFS.display.print(42, true) → 0042
print(float, dp) Float with decimal places MFS.display.print(3.14, 2)
print(text) Display text (A-Z, 0-9, -, _) MFS.display.print("HELP")
setNumber(pos, val) Set single digit (pos 1-4) MFS.display.setNumber(1, 5)
setChar(pos, ch) Set character at position MFS.display.setChar(2, 'A')
setChar(pos, SegChars) Set special character MFS.display.setChar(3, SegCharsDEGREE)
setDot(pos) Add dot at position MFS.display.setDot(2)
clear() Clear all digits and dots MFS.display.clear()
show() Commit manual changes MFS.display.show()

Remarque : Les méthodes print() appellent show() automatiquement. Utilisez clear(), setNumber(), setChar(), setDot(), puis show() pour un contrôle manuel.

Caractères spéciaux disponibles via SegChars : DASH (-), UNDERSCORE (_), C, E, F, DEGREE (°).

Code Arduino - Boutons

Le code suivant détecte les appuis et relâchements des boutons, affichant les événements dans le Moniteur Série.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-multi-function-shield */ /* * Multi-Function Shield - Buttons Example * * Detects button presses and releases, prints to Serial Monitor. * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> void setup() { Serial.begin(9600); MFS.begin(); } void loop() { MFS.loop(); if (MFS.button1.isPressed()) Serial.println("Button 1 pressed"); if (MFS.button1.isReleased()) Serial.println("Button 1 released"); if (MFS.button2.isPressed()) Serial.println("Button 2 pressed"); if (MFS.button2.isReleased()) Serial.println("Button 2 released"); if (MFS.button3.isPressed()) Serial.println("Button 3 pressed"); if (MFS.button3.isReleased()) Serial.println("Button 3 released"); }

Étapes Rapides

  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
  • Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.
  • Ouvrez le Moniteur Série.
  • Appuyez et relâchez les boutons S1, S2 et S3 du shield pour voir le résultat.

Résumé de l'API Bouton

Method Description
isPressed() Returns true once when button is pressed
isReleased() Returns true once when button is released
setDebounceTime(ms) Set debounce time (default 50 ms)

Les boutons ont un antirebond intégré et utilisent une logique active BAS avec des résistances de tirage internes. Vous pouvez accéder aux boutons par nom (MFS.button1, MFS.button2, MFS.button3) ou par index (MFS.button(1) à MFS.button(3)).

Code Arduino - LEDs

Le code suivant allume les LEDs une par une, puis les fait toutes clignoter ensemble.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-multi-function-shield */ /* * Multi-Function Shield - LEDs Example * * Demonstrates turn on, turn off, and blink for each LED. * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> void setup() { Serial.begin(9600); MFS.begin(); // Turn on all LEDs one by one Serial.println("Turn ON LEDs one by one"); for (uint8_t i = 1; i <= 4; i++) { MFS.led(i).turnON(); delay(500); } delay(1000); // Turn off all LEDs one by one Serial.println("Turn OFF LEDs one by one"); for (uint8_t i = 1; i <= 4; i++) { MFS.led(i).turnOFF(); delay(500); } delay(1000); // Blink individual LED (LED 1 only) Serial.println("Blink LED 1 individually"); MFS.led(1).blink(300); unsigned long start = millis(); while (millis() - start < 3000) MFS.loop(); MFS.led(1).turnOFF(); delay(1000); // Blink all LEDs together Serial.println("Blink all LEDs together"); MFS.allLedsBlink(500); } void loop() { MFS.loop(); }

Étapes Rapides

  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
  • Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.

Les LEDs s'allument séquentiellement avec un délai de 500 ms, puis les 4 LEDs clignotent toutes ensemble.

Résumé de l'API LED

Method Description
turnON() Turn LED on
turnOFF() Turn LED off
toggle() Toggle LED state
blink(interval) Blink with equal on/off time
blink(onTime, offTime) Blink with separate on/off times
isOn() Returns true if LED is currently on

Méthodes de commodité sur MFS :

Method Description
allLedsOn() Turn on all 4 LEDs
allLedsOff() Turn off all 4 LEDs
allLedsBlink(interval) Blink all LEDs together
allLedsBlink(onTime, offTime) Blink all with separate on/off times

Les LEDs sont actives BAS. Accès par nom (MFS.led1 à MFS.led4) ou par index (MFS.led(1) à MFS.led(4)).

Code Arduino - Buzzer

Le code suivant fait sonner le buzzer toutes les 2 secondes.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-multi-function-shield */ /* * Multi-Function Shield - Buzzer Example * * Beeps the buzzer every 2 seconds. * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> unsigned long lastBeep = 0; void setup() { MFS.begin(); } void loop() { MFS.loop(); if (millis() - lastBeep >= 2000) { lastBeep = millis(); MFS.buzzer.beep(100); } }

Étapes Rapides

  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
  • Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.

Vous entendrez un court bip toutes les 2 secondes.

Résumé de l'API Buzzer

Method Description
beep(ms) Beep for the specified duration
beep(ms, delayMs) Wait delayMs, then beep for ms
stop() Stop the buzzer immediately
isBeeping() Returns true if buzzer is currently on

Code Arduino - Potentiomètre

Le code suivant lit le potentiomètre et affiche la valeur et le pourcentage dans le Moniteur Série.

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-multi-function-shield */ /* * Multi-Function Shield - Potentiometer Example * * Reads the potentiometer and shows the percentage on the display. * * NOTE: The potentiometer on the shield is a multi-turn trimmer. * You need to rotate it MANY turns to go from 0% to 100%. * If the value stays at 0% or 100%, rotate in the opposite direction. * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> unsigned long lastUpdate = 0; float lastPct = -1; void setup() { Serial.begin(9600); MFS.begin(); Serial.println("Rotate potentiometer knob (multi-turn trimmer)."); Serial.println("It requires many turns to go from 0% to 100%."); } void loop() { MFS.loop(); if (millis() - lastUpdate >= 500) { lastUpdate = millis(); int raw = MFS.readPot(); float pct = MFS.readPotPercent(); Serial.print("Raw: "); Serial.print(raw); Serial.print(" Percent: "); Serial.print(pct, 1); Serial.print("%"); if (pct <= 0.1) Serial.print(" ← MIN (rotate clockwise to increase)"); else if (pct >= 99.9) Serial.print(" ← MAX (rotate counter-clockwise to decrease)"); Serial.println(); lastPct = pct; } }

Étapes Rapides

  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
  • Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.
  • Ouvrez le Moniteur Série.
  • Tournez le bouton du potentiomètre et observez le changement de valeur dans le Moniteur Série.

Résumé de l'API Potentiomètre

Method Returns Description
readPot() int Raw ADC value (0–1023 on Uno)
readPotPercent() float Percentage (0.0 – 100.0)

Code Arduino - Capteur de Température (LM35)

Le code suivant lit le capteur de température LM35 et affiche la valeur en Celsius sur l'afficheur et dans le Moniteur Série.

Important : Vous devez retirer le cavalier J1 du shield pour utiliser le capteur de température LM35 (la broche A4 est partagée avec I2C SDA).

/* * Ce code Arduino a été développé par newbiely.fr * Ce code Arduino est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/arduino/arduino-multi-function-shield */ /* * Multi-Function Shield - Temperature Example * * Reads the LM35 temperature sensor and shows Celsius on the display. * Note: Requires jumper J1 removed (pin A4). * * Hardware: DIYables Multi-Function Shield * * COMPATIBLE Multi-Function Shield: * - https://diyables.io/products/multi-function-shield-for-arduino-uno-mega * * TESTED HARDWARE: * - Arduino Uno R3 * - Arduino Uno R4 WiFi * - Arduino Uno R4 Minima * - Arduino Mega * - Arduino Due * - Arduino Giga * - DIYables STEM V3: https://diyables.io/stem-v3 * - DIYables STEM V4 IoT: https://diyables.io/stem-v4-iot * - DIYables STEM V4B IoT: https://diyables.io/stem-v4b-iot * - DIYables STEM V4 Edu: https://diyables.io/stem-v4-edu * - DIYables MEGA2560 R3: https://diyables.io/atmega2560-board * - DIYables ESP32 S3, Uno-form factor: https://diyables.io/esp32-s3-uno * - It is expected to work with other boards */ #include <DIYables_MultiFuncShield.h> unsigned long lastUpdate = 0; void setup() { Serial.begin(9600); MFS.begin(); MFS.display.print(0); } void loop() { MFS.loop(); if (millis() - lastUpdate >= 500) { lastUpdate = millis(); float temp = MFS.readTemperature(); MFS.display.print(temp, 1); Serial.print("Temp: "); Serial.print(temp, 1); Serial.println(" C"); } }

Étapes Rapides

  • Retirez le cavalier J1 du Shield Multi-Fonctions.
  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'Arduino IDE.
  • Cliquez sur le bouton Téléverser dans l'Arduino IDE pour téléverser le code sur Arduino.
  • Ouvrez le Moniteur Série.
  • Observez la lecture de température sur l'afficheur et dans le Moniteur Série.

La lecture de température utilise une moyenne mobile sur 4 échantillons pour des valeurs stables. Le tampon est automatiquement initialisé à la première lecture pour éviter les erreurs de démarrage à froid.

Démo Complète du Shield Multi-Fonctions Arduino

Voici un tutoriel vidéo étape par étape démontrant tous les exemples du Shield Multi-Fonctions. Notez que la vidéo montre l'Arduino Uno R4, mais cela fonctionne de manière identique pour l'Arduino Uno R3 :

Compatibilité des Plateformes

La bibliothèque prend en charge toutes les plateformes Arduino (architectures=*).

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !