Arduino - Interrupteur DIP

Les commutateurs DIP (Dual In-line Package) sont couramment utilisés en électronique pour des fins de configuration, telles que la définition d'adresses de dispositifs, l'activation ou la désactivation de fonctionnalités, etc. Dans ce tutoriel, nous allons apprendre à utiliser le commutateur DIP avec Arduino. En détail, nous apprendrons :

Arduino avec interrupteur DIP

Préparation du matériel

1×Arduino Uno
1×USB 2.0 cable type A/B
1×DIP Switch
1×Breadboard
1×Jumper Wires
1×(Optional) 9V Power Adapter for Arduino
1×(Recommended) Screw Terminal Block Shield for Arduino Uno
1×(Optional) Transparent Acrylic Enclosure For Arduino Uno

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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.

Sur l'interrupteur DIP

Les commutateurs DIP sont principalement utilisés pour la configuration des appareils, permettant aux utilisateurs de définir des paramètres tels que l'adresse de l'appareil, les paramètres de communication, les codes de sécurité, le mode de fonctionnement et les préférences système dans divers secteurs et applications.

Un commutateur DIP est constitué de plusieurs petits interrupteurs à glissière tous regroupés ensemble. Chacun de ces interrupteurs à glissière est appelé une "position". Les commutateurs DIP sont disponibles en différents types selon le nombre de positions qu'ils ont. Par exemple, il existe des commutateurs DIP à 2 positions, à 4 positions, à 5 positions, à 6 positions, à 8 positions et à 10 positions.

Un interrupteur DIP peut représenter un nombre configurable. Chaque position sur l'interrupteur correspond à un bit du nombre. En basculant les positions entre ON et OFF, nous pouvons régler le nombre désiré.

Brochage

Brochage des interrupteurs DIP
image source: diyables.io

Un interrupteur DIP est composé de deux rangées de broches, le nombre de broches dans chaque rangée correspondant au nombre de positions de l'interrupteur disponibles. Par exemple, un interrupteur DIP à 4 positions comprend un total de 8 broches, réparties uniformément avec 4 broches de chaque côté. Dans l'assemblage de l'interrupteur DIP, chaque paire de broches opposées constitue un interrupteur à glissière. Il est à noter que distinguer entre les broches des deux côtés n'est pas nécessaire car elles sont interchangeables.

Comment ça fonctionne

Dans les interrupteurs DIP, lorsqu'un interrupteur est en position ON, cela signifie que l'interrupteur est fermé. Cela signifie que la connexion électrique est établie, permettant au courant de circuler à travers l'interrupteur.

Inversement, lorsqu'un interrupteur est en position OFF, cela signifie que l'interrupteur est ouvert. Dans cet état, la connexion électrique est interrompue et le courant ne peut pas circuler à travers l'interrupteur.

Alors, pour clarifier :

  • Position ON : Circuit fermé, permettant le passage du courant.
  • Position OFF : Circuit ouvert, bloquant le passage du courant.

Lorsque nous connectons un côté d'un interrupteur à GND et l'autre à une broche Arduino, puis configurons cette broche Arduino en entrée numérique avec pull-up, le tableau ci-dessous montre la relation entre la position de l'interrupteur et les valeurs lues depuis l'Arduino :

DIP switch position Binary representation Circuit state Arduino pin state
ON 1 CLOSED LOW
OFF 0 OPEN HIGH

Dans les parties suivantes, nous utiliserons par exemple un commutateur DIP à 4 positions. Vous pouvez facilement l'adapter pour des commutateurs DIP à 2 positions, 3 positions, 5 positions, 6 positions, 8 positions et 10 positions...

Diagramme de câblage

Schéma de câblage de l'interrupteur DIP Arduino

This image is created using Fritzing. Click to enlarge image

Code Arduino - Interrupteur DIP

Nous apprendrons à travers deux morceaux de code :

  • Lire l'état ON/OFF de chaque position sur le commutateur DIP.
  • Encoder les positions en un nombre.

Code Arduino - Lecture de l'état ON/OFF du commutateur DIP

/* * 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-dip-switch */ #define POSITION_NUM 4 #define ON LOW #define OFF HIGH // define the pins connected to the dip switch const int SWITCH_PINS[] = { 2, 3, 4, 5 }; void setup() { // initialize serial communication Serial.begin(9600); // set the dip switch pins as inputs with pull-up resistors enabled for (int i = 0; i < POSITION_NUM; i++) pinMode(SWITCH_PINS[i], INPUT_PULLUP); } void loop() { // Read the state of each switch position for (int i = 0; i < POSITION_NUM; i++) { Serial.print("position "); Serial.print(i + 1); Serial.print(": "); int state = digitalRead(SWITCH_PINS[i]); if (state == ON) Serial.println("ON "); else Serial.println("OFF "); } Serial.println(); // add a delay to prevent rapid readings delay(500); }

Étapes rapides

  • Faites le câblage comme sur le schéma ci-dessus
  • Connectez l'Arduino au PC via un câble USB
  • Ouvrez l'Arduino IDE
  • Sélectionnez la bonne carte et le bon port
  • Cliquez sur le bouton Upload dans l'Arduino IDE pour charger le code sur l'Arduino
  • Basculez chaque position sur l'interrupteur DIP en ON une par une.
  • Consultez le résultat sur le moniteur série.
COM6
Send
position 1: OFF position 2: OFF position 3: OFF position 4: OFF position 1: ON position 2: OFF position 3: OFF position 4: OFF position 1: ON position 2: ON position 3: OFF position 4: OFF position 1: ON position 2: ON position 3: ON position 4: OFF position 1: ON position 2: ON position 3: ON position 4: ON
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Code Arduino - Encoder les états d'un interrupteur DIP en nombre

/* * 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-dip-switch */ #define POSITION_NUM 4 #define ON LOW #define OFF HIGH // define the pins connected to the dip switch const int SWITCH_PINS[] = { 2, 3, 4, 5 }; void setup() { // Initialize serial communication Serial.begin(9600); // Set the DIP switch pins as inputs with pull-up resistors enabled for (int i = 0; i < POSITION_NUM; i++) pinMode(SWITCH_PINS[i], INPUT_PULLUP); } void loop() { int encoded_state = 0; for (int i = 0; i < POSITION_NUM; i++) { int state = digitalRead(SWITCH_PINS[i]); if (state == ON) encoded_state |= 1 << (POSITION_NUM - i - 1); } Serial.print("encoded state: "); Serial.println(encoded_state); // add a delay to prevent rapid readings delay(500); }

Étapes rapides

  • Téléchargez le code ci-dessus sur Arduino
  • Basculez chaque position sur le commutateur DIP en position ON une par une.
  • Vérifiez le résultat sur le moniteur série, cela ressemble à ce qui suit.
COM6
Send
encoded state: 0 encoded state: 1 encoded state: 2 encoded state: 3 encoded state: 4 encoded state: 5 encoded state: 6 encoded state: 7 encoded state: 8 encoded state: 9 encoded state: 10 encoded state: 11 encoded state: 12 encoded state: 13 encoded state: 14 encoded state: 15
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Veuillez noter que la valeur dépend des positions de chaque commutateur à glissière. Le tableau ci-dessous montre la correspondance entre la position ON/OFF et la valeur entière pour un commutateur DIP à 4 positions :

Position-1Position-2Position-3Position-4Binary ValueDecimal Value
OFF OFF OFF OFF 0000 0
OFF OFF OFF ON 0001 1
OFF OFF ON OFF 0010 2
OFF OFF ON ON 0011 3
OFF ON OFF OFF 0100 4
OFF ON OFF ON 0101 5
OFF ON ON OFF 0110 6
OFF ON ON ON 0111 7
ON OFF OFF OFF 1000 8
ON OFF OFF ON 1001 9
ON OFF ON OFF 1010 10
ON OFF ON ON 1011 11
ON ON OFF OFF 1100 12
ON ON OFF ON 1101 13
ON ON ON OFF 1110 14
ON ON ON ON 1111 15

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!