Arduino Mega - DIP Switch

Bienvenue dans ce tutoriel complet sur les DIP switches avec Arduino Mega ! Dans ce guide détaillé, vous découvrirez comment intégrer des DIP switches (commutateurs Dual In-line Package) dans vos projets Arduino pour la configuration utilisateur, la sélection d'adresses, le contrôle des modes de fonctionnement et l'encodage d'entrées binaires. Les DIP switches constituent l'interface de configuration physique que l'on trouve dans d'innombrables appareils électroniques, des équipements industriels aux produits grand public, et apprendre à les utiliser avec votre Arduino Mega vous ouvre un monde de projets personnalisables et contrôlables par l'utilisateur.

Les DIP switches sont des commutateurs miniatures à bascule ou coulissants disposés dans un boîtier compact en ligne, offrant un moyen simple mais puissant pour les utilisateurs ou techniciens de configurer les paramètres matériels sans reprogrammation. Contrairement aux boutons qui fournissent une entrée momentanée, les DIP switches maintiennent leur position, les rendant parfaits pour les paramètres de configuration persistants qui doivent rester constants pendant le fonctionnement. Que vous construisiez un appareil avec plusieurs modes de fonctionnement, créiez des modules à adresses sélectionnables pour des réseaux multi-appareils, conceviez des systèmes de sécurité avec codes d'accès, ou développiez des produits nécessitant des options configurables sur le terrain, les DIP switches fournissent une solution de configuration fiable, ne nécessitant aucune programmation.

Tout au long de ce tutoriel DIP switch avec Arduino Mega, nous explorerons tout ce dont vous avez besoin pour maîtriser l'entrée binaire et la gestion de configuration :

Ce projet DIP switch avec Arduino Mega permet d'incroyables possibilités de configuration ! Créez des robots multi-modes avec des préréglages de comportement, des appareils I2C à adresses sélectionnables, des systèmes de sécurité avec codes d'accès physiques, des contrôleurs d'éclairage configurables, des sélecteurs d'ID d'appareil pour installations multi-unités, des sélecteurs de paramètres de fonctionnement (vitesse, sensibilité, seuils), l'adressage de nœuds réseau, des sélecteurs de difficulté de jeu, et toute application nécessitant des paramètres configurables par l'utilisateur persistants sans écrans tactiles ou interfaces complexes.

Arduino Mega avec DIP Switch

Matériel requis

1×Arduino Mega
1×Câble USB 2.0 type A/B
1×DIP Interrupteur
1×Breadboard (plaque d'essai)
1×Câbles de connexion
1×Recommandé: Screw Terminal Block Shield for Arduino Uno/Mega
1×Recommandé: Breadboard Shield for Arduino Mega
1×Recommandé: Enclosure for Arduino Mega

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
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 DIP Switch

Un DIP switch (commutateur Dual In-line Package) est un dispositif d'entrée électronique manuel composé de plusieurs commutateurs à bascule ou coulissants miniatures logés dans un seul boîtier plastique compact. Ces commutateurs sont spécialement conçus pour la configuration, l'adressage et la sélection de modes dans les circuits et appareils électroniques. Le nom "dual in-line" fait référence aux deux rangées parallèles de broches qui correspondent à la disposition des boîtiers de circuits intégrés (IC) traditionnels, les rendant compatibles avec les breadboards et le montage PCB standard.

Applications principales et cas d'usage :

Les DIP switches servent d'interfaces de configuration persistantes dans de nombreuses applications à travers diverses industries :

  • Adressage d'appareils : Définition d'adresses uniques pour les esclaves I2C, nœuds RS485, appareils DMX ou modules réseau dans des systèmes multi-appareils
  • Configuration de protocoles de communication : Sélection des taux de transmission, paramètres de parité, bits de données ou modes de communication
  • Sécurité et contrôle d'accès : Création de codes d'accès physiques ou combinaisons PIN pour systèmes de sécurité
  • Sélection de modes de fonctionnement : Choix entre différents modes opérationnels (manuel/automatique, normal/debug, maître/esclave)
  • Configuration de paramètres : Définition de valeurs de seuil, niveaux de sensibilité, délais ou plages de tension
  • Options système : Activation ou désactivation de fonctionnalités comme la sortie de débogage, verrouillages de sécurité ou fonctions avancées
  • Identification matérielle : Attribution d'ID de carte ou numéros de module dans des systèmes modulaires
  • Fabrication et tests : Configuration des modes de test de production ou paramètres d'étalonnage

Structure physique et conception :

Un DIP switch consiste en plusieurs commutateurs coulissants ou à bascule indépendants intégrés dans un seul boîtier. Caractéristiques physiques clés :

  • Positions de commutateur individuelles : Chaque bascule ou coulissant représente un bit binaire (ON/OFF, 1/0)
  • Boîtier commun : Tous les commutateurs partagent un boîtier plastique unifié pour un montage compact
  • Rangées de broches doubles : Deux rangées parallèles de broches pour la compatibilité breadboard et PCB
  • Marquages clairs : Généralement étiquetés avec numéros de position (1, 2, 3, 4...) et indicateurs ON/OFF
  • Rétention mécanique : Les commutateurs maintiennent leur position jusqu'à changement manuel (non-momentané)
  • Taille compacte : Dimensions typiques de 10-25mm de longueur selon le nombre de positions

Configurations de positions disponibles :

Les DIP switches existent en diverses tailles, chacune offrant différentes capacités d'encodage :

  • DIP switch 2 positions : 2 bits = 4 combinaisons possibles (0-3)
  • DIP switch 4 positions : 4 bits = 16 combinaisons possibles (0-15) ← Le plus courant pour les projets Arduino
  • DIP switch 5 positions : 5 bits = 32 combinaisons possibles (0-31)
  • DIP switch 6 positions : 6 bits = 64 combinaisons possibles (0-63)
  • DIP switch 8 positions : 8 bits = 256 combinaisons possibles (0-255) ← Encodage d'octet standard
  • DIP switch 10 positions : 10 bits = 1024 combinaisons possibles (0-1023)

Fondamentaux de l'encodage binaire :

La puissance des DIP switches réside dans leur capacité à encoder des valeurs numériques par représentation binaire. Chaque position de commutateur représente un bit dans un nombre binaire :

  • Position 1 (la plus à droite) : Bit le Moins Significatif (LSB) = 2⁰ = 1
  • Position 2 : 2¹ = 2
  • Position 3 : 2² = 4
  • Position 4 (la plus à gauche) : Bit le Plus Significatif (MSB) = 2³ = 8

Quand vous réglez les commutateurs ON ou OFF, vous "écrivez" essentiellement un nombre binaire. Par exemple, avec un DIP switch 4 positions :

  • ON-OFF-ON-OFF = binaire 1010 = décimal 10
  • ON-ON-ON-ON = binaire 1111 = décimal 15
  • OFF-OFF-OFF-OFF = binaire 0000 = décimal 0

Cet encodage binaire permet à un simple appareil à 4 commutateurs de représenter 16 valeurs différentes, rendant les DIP switches incroyablement compacts pour les interfaces de configuration.

Avantages des DIP switches :

  • Aucune programmation requise : Les utilisateurs peuvent reconfigurer les appareils sur le terrain sans changements de code ou mises à jour de firmware
  • Configuration non-volatile : Les paramètres persistent à travers les cycles d'alimentation et resets
  • Confirmation visuelle : Les positions physiques des commutateurs fournissent un retour visuel immédiat des paramètres actuels
  • Fonctionnement fiable : Les commutateurs mécaniques sont robustes et résistants au bruit électrique
  • Coût faible : Composants peu coûteux adaptés aux projets de production et amateurs
  • Aucun composant supplémentaire : Fonctionne directement avec les broches GPIO du microcontrôleur en utilisant les résistances pull-up internes
  • Standard industriel : Interface largement reconnue que les techniciens comprennent intuitivement
  • Compatible breadboard : Prototypage facile avec espacement standard des broches de 0,1" (2,54mm)

Brochage

Brochage DIP Switch
image source: diyables.io

Comprendre le brochage des DIP switches est essentiel pour les connexions appropriées sur breadboard et Arduino. Bien que l'arrangement des broches puisse initialement sembler confus avec deux rangées de broches, la structure sous-jacente est en réalité assez simple une fois que vous comprenez le concept d'appairage.

Structure et disposition des broches :

Un DIP switch présente deux rangées parallèles de broches positionnées sur les côtés opposés du corps du composant. La relation critique à comprendre est :

  • Nombre de broches par rangée = Nombre de positions de commutateur
  • Total des broches = 2 × Nombre de positions

Par exemple :

  • DIP switch 4 positions : 8 broches totales (4 broches par rangée)
  • DIP switch 8 positions : 16 broches totales (8 broches par rangée)
  • DIP switch 2 positions : 4 broches totales (2 broches par rangée)

Appairage des broches et correspondance des commutateurs :

Chaque commutateur coulissant ou à bascule individuel connecte exactement deux broches - une broche de chaque rangée. Ces broches appairées se font directement face à travers le corps du commutateur :

Rangée A: [1A] [2A] [3A] [4A] ← Rangée du haut Commutateurs: | | | | ← Commutateurs individuels Rangée B: [1B] [2B] [3B] [4B] ← Rangée du bas

Quand vous regardez le commutateur du dessus :

  • Commutateur position 1 : Connecte les broches 1A et 1B (première broche de chaque rangée)
  • Commutateur position 2 : Connecte les broches 2A et 2B (deuxième broche de chaque rangée)
  • Commutateur position 3 : Connecte les broches 3A et 3B (troisième broche de chaque rangée)
  • Commutateur position 4 : Connecte les broches 4A et 4B (quatrième broche de chaque rangée)

Principes clés du brochage :

  1. Aucune polarité : Contrairement aux diodes ou LED, les DIP switches n'ont pas de polarité. Peu importe quel côté se connecte à l'Arduino et lequel se connecte à la masse - le commutateur fonctionne identiquement dans les deux orientations.
  2. Rangées de broches interchangeables : Vous pouvez connecter l'une ou l'autre rangée à vos broches d'entrée Arduino et l'autre rangée à la masse. La plupart des gens connectent la rangée du haut aux broches Arduino et la rangée du bas à la masse, mais l'inverse fonctionne également bien.
  3. Commutateurs indépendants : Chaque position de commutateur fonctionne complètement indépendamment. Fermer (mettre ON) la position 1 n'a aucun effet sur les positions 2, 3 ou 4.
  4. Montage breadboard : Les DIP switches chevauchent l'espace central d'une breadboard, avec une rangée de broches de chaque côté. Ceci empêche les broches de se court-circuiter ensemble et fournit un accès facile pour les connexions de câbles de liaison.

Stratégie de connexion :

Méthode 1 (Recommandée pour la clarté) :

  • Connecter une rangée entière de broches ensemble à GND (masse commune)
  • Connecter chaque broche de la rangée opposée à des broches d'entrée digitales Arduino séparées
  • Activer les résistances pull-up internes dans le logiciel (pinMode(pin, INPUT_PULLUP))

Méthode 2 (Alternative) :

  • Connecter une rangée à VCC (5V)
  • Connecter l'autre rangée aux broches d'entrée Arduino avec résistances pull-down externes
  • Moins courante à cause de l'exigence de résistance externe

Lecture des broches :

Avec configuration pull-up :

  • Commutateur ON (fermé) → Broche connectée à GND → Arduino lit LOW
  • Commutateur OFF (ouvert) → Broche tirée HIGH par résistance interne → Arduino lit HIGH

Cette logique inversée (ON=LOW, OFF=HIGH) est importante à retenir lors de l'écriture de votre code !

Exemple de câblage pratique (DIP switch 4 positions) :

DIP Switch Arduino Mega ───────────── ──────────── Rangée A Broche 1 → Broche digitale 2 Rangée A Broche 2 → Broche digitale 3 Rangée A Broche 3 → Broche digitale 4 Rangée A Broche 4 → Broche digitale 5 Broches B 1-4 → GND (toutes connectées ensemble)

Conseil de vérification :

Si vous n'êtes pas sûr de quelles broches sont appairées, utilisez un multimètre en mode continuité :

  1. Réglez un commutateur sur ON, les autres sur OFF
  2. Testez les combinaisons de broches jusqu'à entendre le bip de continuité
  3. La paire qui bipe sont les deux broches contrôlées par ce commutateur
  4. Répétez pour les commutateurs restants pour cartographier toutes les paires de broches

Comment ça fonctionne

Comprendre le fonctionnement électrique des DIP switches est fondamental pour lire correctement leurs états avec votre Arduino Mega. Les DIP switches sont des dispositifs électromécaniques simples qui contrôlent la continuité électrique entre deux broches, mais leur comportement dans un circuit nécessite de comprendre les résistances pull-up et la logique inversée.

Mécanisme de base du commutateur :

Chaque position dans un DIP switch est un commutateur indépendant Single Pole Single Throw (SPST) avec deux états de fonctionnement :

Position ON (Circuit fermé) :

  • Le contact métallique interne relie les deux broches
  • La connexion électrique est complétée - le courant peut circuler
  • Les deux broches sont électriquement connectées (continuité existe)
  • Agit comme un fil connectant les broches ensemble
  • Résistance entre les broches : ~0Ω (essentiellement zéro)

Position OFF (Circuit ouvert) :

  • Le contact métallique interne se sépare d'une ou des deux broches
  • La connexion électrique est rompue - le courant ne peut pas circuler
  • Les deux broches sont électriquement isolées (pas de continuité)
  • Agit comme un espace d'air entre les broches
  • Résistance entre les broches : ∞Ω (infinie, pas de connexion)

Résumé :

  • Position ON = Circuit FERMÉ = L'électricité PEUT circuler
  • Position OFF = Circuit OUVERT = L'électricité NE PEUT PAS circuler

Configuration du circuit Arduino :

Pour lire de manière fiable les états des DIP switches, nous utilisons les résistances pull-up internes de l'Arduino. C'est la configuration standard et recommandée :

Configuration de câblage :

  1. Connecter une rangée de broches du DIP switch à GND (masse)
  2. Connecter l'autre rangée de broches aux broches d'entrée digitales Arduino
  3. Activer le mode INPUT_PULLUP dans le code : pinMode(pin, INPUT_PULLUP)

Comment fonctionnent les résistances pull-up :

Quand vous configurez une broche comme INPUT_PULLUP, l'Arduino connecte intérieurement une résistance ~20kΩ entre la broche et VCC (5V). Cette résistance "tire" la tension de la broche HIGH quand rien d'autre n'est connecté :

VCC (5V) | [20kΩ] ← Résistance pull-up interne | Broche Arduino ←→ DIP Switch ←→ GND

Logique de lecture d'état (Logique inversée) :

Avec la configuration pull-up, la logique est inversée par rapport à ce que vous pourriez initialement attendre :

Quand le commutateur est ON (fermé) :

  • Le commutateur crée une connexion directe entre la broche Arduino et GND
  • La masse fournit un chemin vers 0V (résistance plus faible que pull-up)
  • Le courant circule à travers la résistance pull-up vers la masse
  • La tension de la broche chute à ~0V
  • L'Arduino lit : LOW
  • C'est contre-intuitif : position ON = lecture LOW !

Quand le commutateur est OFF (ouvert) :

  • Aucune connexion entre la broche Arduino et GND
  • La résistance pull-up maintient la broche à 5V (pas de circulation de courant)
  • La broche "flotte" HIGH grâce à la résistance pull-up
  • L'Arduino lit : HIGH
  • C'est aussi contre-intuitif : position OFF = lecture HIGH !

Tableau de relation d'états :

Le tableau ci-dessous résume la relation entre la position physique du commutateur et les lectures Arduino avec configuration pull-up :

Position DIP Switch Représentation binaire État du circuit physique Connexion électrique État de la broche Arduino Valeur digitalRead()
ON 1 FERMÉ Broche connectée à GND LOW 0
OFF 0 OUVERT Broche tirée à 5V HIGH 1

Inversion de logique importante :

Remarquez l'inversion :

  • Commutateur ON → Binaire 1 → Arduino lit LOW (0)
  • Commutateur OFF → Binaire 0 → Arduino lit HIGH (1)

Lors de l'encodage des nombres binaires, vous devrez inverser les lectures dans le logiciel :

int switchState = !digitalRead(switchPin); // Inverser la logique // Maintenant : ON = 1 (true), OFF = 0 (false)

Pourquoi utiliser la configuration pull-up ?

  1. Aucun composant externe : Le pull-up interne de l'Arduino élimine le besoin de résistances externes
  2. Pratique standard : Configuration standard de l'industrie pour les commutateurs et boutons
  3. Fiable : Empêche les entrées "flottantes" qui pourraient lire des valeurs aléatoires
  4. Protection : Limite le courant quand le commutateur se ferme (résistance empêche court-circuit)

Alternative : Configuration pull-down (Non recommandée) :

Vous pourriez théoriquement utiliser des résistances pull-down externes (connexion à GND au lieu de VCC), ce qui donnerait une logique non-inversée (ON=HIGH, OFF=LOW). Cependant, ceci nécessite des composants externes puisque l'Arduino n'a pas de résistances pull-down internes, le rendant moins pratique.

Exemple pratique (DIP switch 4 positions) :

Dans les sections suivantes, nous utiliserons un DIP switch 4 positions comme exemple de travail. Cependant, les principes s'appliquent universellement à toutes les tailles de DIP switch :

  • Commutateurs 2 positions (2 bits = plage 0-3)
  • Commutateurs 5 positions (5 bits = plage 0-31)
  • Commutateurs 6 positions (6 bits = plage 0-63)
  • Commutateurs 8 positions (8 bits = plage 0-255)
  • Commutateurs 10 positions (10 bits = plage 0-1023)

Le code s'adapte naturellement - ajoutez simplement plus de broches pour lire plus de positions de commutateurs !

Schéma de câblage

Connecter un DIP switch à votre Arduino Mega est simple grâce à la conception compatible breadboard du composant. Cette configuration de câblage utilise les résistances pull-up internes de l'Arduino, éliminant le besoin de tout composant externe au-delà des câbles de liaison.

Schéma de câblage Arduino Mega DIP switch

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

Configuration de câblage expliquée :

Le schéma ci-dessus montre la méthode de connexion recommandée pour un DIP switch 4 positions :

Connexion de masse (rail commun) :

  • Connecter une rangée complète de broches du DIP switch au rail de masse de la breadboard (rail bleu/négatif)
  • Le rail de masse se connecte à la broche GND de l'Arduino Mega
  • Ceci fournit une référence de masse commune pour les quatre positions de commutateur
  • Les quatre commutateurs partagent cette connexion de masse unique

Connexions des broches Arduino (signaux individuels) :

  • Connecter chaque broche de la rangée opposée à des broches digitales Arduino séparées
  • Attribution typique des broches pour DIP switch 4 positions :
    • Position 1 → Arduino Mega Broche 2 (LSB - Bit le Moins Significatif)
    • Position 2 → Arduino Mega Broche 3
    • Position 3 → Arduino Mega Broche 4
    • Position 4 → Arduino Mega Broche 5 (MSB - Bit le Plus Significatif)

    Placement sur breadboard :

    1. Chevaucher l'espace central : Positionner le DIP switch de façon à ce qu'il chevauche le canal de division central de la breadboard
    2. Séparation des rangées de broches : Une rangée de broches se connecte aux trous du côté gauche, l'autre au côté droit
    3. Empêche les courts-circuits : Cet arrangement assure que les deux rangées de broches ne se connectent pas accidentellement ensemble
    4. Accès facile : Les deux rangées de broches sont accessibles pour les connexions de câbles de liaison

    Ordre de connexion (étape par étape) :

    1. Insérer le DIP switch dans la breadboard en chevauchant l'espace central
    2. Utiliser un câble de liaison pour connecter une rangée entière de broches au rail de masse de la breadboard
    3. Connecter le rail de masse de la breadboard au GND de l'Arduino Mega avec un câble de liaison
    4. Connecter les broches individuelles de la rangée opposée aux broches digitales Arduino 2, 3, 4, 5
    5. Vérifier que toutes les connexions sont sécurisées et que les broches ne sont pas pliées

    Flexibilité de sélection des broches :

    Vous n'êtes pas limité aux broches 2-5 ! Le DIP switch peut se connecter à n'importe quelles broches digitales sur l'Arduino Mega :

    • Broches 2-53 : N'importe quelle broche digitale fonctionne (Mega a 54 broches I/O digitales !)
    • Attribution séquentielle : Utiliser des broches consécutives (2,3,4,5) rend le code plus lisible
    • Éviter les conflits : N'utilisez pas les broches déjà attribuées à d'autres composants (Serial, SPI, I2C)

    Rappelez-vous juste de mettre à jour les définitions de broches dans votre code pour correspondre à votre câblage physique :

    const int DIP_PIN_1 = 2; // Changez ceci pour correspondre à votre câblage const int DIP_PIN_2 = 3; const int DIP_PIN_3 = 4; const int DIP_PIN_4 = 5;

    Pourquoi cette configuration fonctionne :

    Cette configuration de câblage crée un circuit d'entrée digitale fiable :

    • Quand le commutateur est ON : La broche se connecte directement à GND → lit LOW
    • Quand le commutateur est OFF : La résistance pull-up interne maintient la broche HIGH
    • Pas d'entrées flottantes : La broche a toujours un niveau de tension défini (soit 0V soit 5V)
    • Aucune résistance externe nécessaire : Les pull-ups internes ~20kΩ de l'Arduino gèrent tout

    Adaptation aux différentes tailles de DIP switches :

    Le même principe de câblage s'applique à toutes les configurations de DIP switch :

    • Commutateur 2 positions : Connecter à 2 broches Arduino (ex. broches 2-3)
    • Commutateur 6 positions : Connecter à 6 broches Arduino (ex. broches 2-7)
    • Commutateur 8 positions : Connecter à 8 broches Arduino (ex. broches 2-9)
    • Commutateur 10 positions : Connecter à 10 broches Arduino (ex. broches 2-11)

    Connectez toujours une rangée complète à GND et les broches de la rangée opposée individuellement aux entrées digitales Arduino.

    Dépannage des problèmes de câblage :

    • Lectures semblent aléatoires/instables : Vérifiez que INPUT_PULLUP est activé dans le code
    • Tous les commutateurs lisent pareil : Les rangées de broches peuvent être accidentellement court-circuitées ensemble
    • Aucune lecture ne change : Vérifiez la connexion de masse et les attributions de broches Arduino
    • Lectures inversées : Ceci est normal avec la configuration pull-up (ON=LOW, OFF=HIGH)

Code Arduino Mega - DIP Switch

Programmer l'Arduino Mega pour lire les états des DIP switches implique deux approches distinctes, chacune adaptée à différentes applications. Comprendre les deux méthodes vous donne de la flexibilité dans la façon dont vous utilisez les DIP switches dans vos projets.

Deux approches de programmation :

Approche 1 : Lecture d'état de commutateur individuel

  • Lire chaque position de commutateur indépendamment comme un booléen séparé (ON/OFF, true/false)
  • Idéal pour : Sélection de mode, drapeaux d'activation/désactivation de fonctionnalités, bascules d'options indépendantes
  • Exemples d'usages : Activer le mode debug, sélectionner le mode de fonctionnement, configurer des fonctionnalités individuelles
  • Retourne : Quatre valeurs booléennes séparées (ou états HIGH/LOW)

Approche 2 : Encodage binaire en valeur numérique

  • Combiner tous les états de commutateurs en un seul nombre binaire, puis convertir en décimal

※ 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 !