Arduino UNO Q - Commutateur DIP

Les commutateurs DIP (Dual In-line Package) sont des commutateurs de configuration compacts utilisés pour définir des adresses, activer des fonctionnalités ou sélectionner des modes. Dans ce tutoriel, vous apprendrez à câbler un commutateur DIP 4 positions sur Arduino UNO Q, lire l'état ON/OFF de chaque position, encoder les positions en un nombre, et vérifier les valeurs à distance via Telegram.

Arduino UNO Q - Commutateur DIP

Matériel Requis

1×Arduino UNO Q
1×USB Cable for Arduino Uno Q
1×DIP Interrupteur
1×Plaque d'essai
1×Fils de connexion
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 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 Commutateur DIP

Un commutateur DIP est une unité de commutateurs coulissants multi-positions. Chaque position individuelle est un commutateur ON/OFF indépendant. Les variantes courantes ont 2, 4, 5, 6, 8 ou 10 positions.

Brochage

Un commutateur DIP a deux rangées de broches — une rangée par côté de chaque position. Chaque paire de broches opposées forme un commutateur coulissant. Peu importe quel côté se connecte à GND.

Brochage du Commutateur DIP

Fonctionnement

Connectez un côté de chaque position à GND et l'autre côté à une broche numérique Arduino UNO Q configurée en INPUT_PULLUP. Le tableau ci-dessous montre la logique :

Position commutateur DIP État du circuit État de la broche Arduino UNO Q Valeur binaire
ON FERMÉ LOW 1
OFF OUVERT HIGH 0

Ce tutoriel utilise un commutateur DIP 4 positions sur les broches 2, 3, 4, 5. La même approche fonctionne pour des commutateurs à 2, 5, 6, 8 ou 10 positions — ajustez simplement le nombre de broches.

Schéma de Câblage

Schéma de Câblage Arduino UNO Q Commutateur DIP

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

Code MCU — Commutateur DIP

L'Arduino UNO Q dispose de deux processeurs : le MCU STM32 (gère le contrôle matériel en temps réel) et le MPU Qualcomm (exécute Debian Linux). Dans cette section, seul le MCU STM32 est programmé — le côté Linux reste inactif. Une section ultérieure montrera comment les deux processeurs fonctionnent ensemble.

Deux exemples de code sont fournis :

  • Lecture de chaque position comme ON/OFF
  • Encodage de toutes les positions en un seul entier

Code MCU — Lecture de chaque position DIP comme ON/OFF

/* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q 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-uno-q/arduino-uno-q-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() { // 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++) { int state = digitalRead(SWITCH_PINS[i]); if (state == ON) { // position i+1 is ON // TO DO: add action for ON position here } else { // position i+1 is OFF // TO DO: add action for OFF position here } } delay(500); }

Étapes Rapides

  • Première utilisation de l'Arduino UNO Q ? Suivez le tutoriel Démarrer avec Arduino UNO Q pour préparer votre environnement de développement avant de continuer.
  • Câblez le commutateur DIP : Connectez un côté de chaque position à GND et l'autre côté aux broches 2–5 de l'Arduino UNO Q.
  • Connecter : Branchez l'Arduino UNO Q sur votre ordinateur avec un câble USB-C.
  • Ouvrir Arduino App Lab : Lancez Arduino App Lab et attendez qu'il détecte votre Arduino UNO Q.
  • Créer une nouvelle application : Cliquez sur le bouton Créer une nouvelle application.
Créer une nouvelle application dans Arduino App Lab sur Arduino UNO Q
  • Donnez un nom à l'application, par exemple : DIYables_DIPSwitch
  • Cliquez sur Créer pour confirmer.
  • Vous verrez un ensemble de dossiers et de fichiers générés dans votre nouvelle application.
Dossiers et fichiers de l'application Arduino App Lab sur Arduino UNO Q
  • Trouvez le fichier sketch/sketch.ino — c'est là que vous collerez le programme MCU.
  • Coller le programme : Copiez le code MCU ci-dessus et collez-le dans le fichier sketch. Laissez les autres fichiers par défaut.
    • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
    Add sketch library in Arduino App Lab on Arduino UNO Q
    • Search for Arduino_RouterBridge created by Arduino and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    Arduino_RouterBridge Arduino

    This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

    0.4.1
    Install
    More Info
    • Téléverser : Cliquez sur le bouton Exécuter dans Arduino App Lab pour compiler et téléverser vers le STM32.
    Cliquer sur le bouton Exécuter dans Arduino App Lab sur Arduino UNO Q
    • Retournez les positions DIP une à la fois. L'état est lu toutes les 500 ms et enregistré via le Moniteur Bridge dans la section suivante.
    • Conseil Pro : Vous pouvez étendre POSITION_NUM et SWITCH_PINS[] pour prendre en charge des commutateurs DIP à 6, 8 ou 10 positions.

    Code MCU — Encodage des positions DIP en un nombre

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q 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-uno-q/arduino-uno-q-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() { // 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); } // TO DO: use encoded_state (0-15) in your logic here delay(500); }

    Étapes Rapides

    • Utilisez la même application et le même câblage de l'exemple précédent.
    • Remplacez le programme par le code d'encodage ci-dessus et cliquez sur Exécuter.
    • Retournez les positions DIP à différentes combinaisons et observez la valeur encodée changer dans le Moniteur Bridge.

    Programmation Bridge Linux + MCU

    L'Arduino UNO Q dispose de deux processeurs qui fonctionnent ensemble : le MPU (Qualcomm, exécute Debian Linux) et le MCU (STM32, exécute Zephyr OS avec votre programme Arduino). Ils communiquent via RPC grâce à la bibliothèque Arduino_RouterBridge — jamais via des ports série bruts.

    • Le commutateur DIP est connecté au MCU (STM32) — câblé aux broches d'entrée numérique du STM32. Le MCU lit chaque position avec digitalRead() et INPUT_PULLUP.
    • Le MPU ne peut pas lire le commutateur DIP directement — il doit demander l'état au MCU via Bridge.call(). Le MCU répond immédiatement.
    • Le MPU a le Wi-Fi — car le MPU exécute Debian Linux complet avec Wi-Fi, il peut rapporter l'état DIP via Telegram à la demande.

    En résumé : Le MPU demande l'état DIP → le MCU lit les broches → le MCU rapporte les positions et la valeur encodée → le MPU enregistre ou transfère.

    Programme MCU — commutateur DIP avec Bridge et sortie Moniteur :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q 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-uno-q/arduino-uno-q-dip-switch */ #include "Arduino_RouterBridge.h" #define POSITION_NUM 4 #define ON LOW #define OFF HIGH const int SWITCH_PINS[] = { 2, 3, 4, 5 }; void get_dip_state() { for (int i = 0; i < POSITION_NUM; i++) { int state = digitalRead(SWITCH_PINS[i]); Monitor.print("position "); Monitor.print(i + 1); Monitor.print(": "); Monitor.println(state == ON ? "ON" : "OFF"); } } void get_encoded_state() { 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); } Monitor.println(encoded_state); } void setup() { for (int i = 0; i < POSITION_NUM; i++) pinMode(SWITCH_PINS[i], INPUT_PULLUP); Bridge.begin(); Monitor.begin(); Bridge.provide("get_dip_state", get_dip_state); Bridge.provide("get_encoded_state", get_encoded_state); Monitor.println("DIP Switch Bridge ready"); } void loop() {}

    Script Python (Arduino App Lab) — interrogation de l'état DIP depuis Linux :

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q 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-uno-q/arduino-uno-q-dip-switch */ from arduino.app_utils import * import time def loop(): while True: Bridge.call("get_dip_state") encoded = Bridge.call("get_encoded_state") print(f"Encoded value: {encoded}") time.sleep(2) App.run(user_loop=loop)

    Étapes Rapides

    • Téléverser le programme MCU : Ouvrez Arduino App Lab, créez une nouvelle application, collez le programme MCU Bridge dans sketch/sketch.ino, installez la bibliothèque Arduino_RouterBridge, et cliquez sur Exécuter.
    • Ajouter le script Python : Collez le code Python ci-dessus dans l'onglet Python de la même application.
    • Exécuter l'application : Cliquez sur Exécuter — le côté Python interroge le commutateur DIP toutes les 2 secondes.
    • Retournez les positions DIP à différentes combinaisons.
    • Vérifier la console : Ouvrez l'onglet Console → sous-onglet Moniteur MCU pour voir les positions et la valeur encodée enregistrées en temps réel.

    Sortie de la Console App Lab

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Message (Enter to send a message to "Newbiely" on usb(2820070321))
    New Line
    9600 baud
    DIP Switch Bridge ready position 1: OFF position 2: OFF position 3: OFF position 4: OFF position 1: ON position 2: OFF position 3: OFF position 4: OFF

    Intégration Telegram

    Lisez l'état du commutateur DIP à distance via Telegram.

    Programme MCU : Conservez le même programme MCU de la section Bridge précédente.

    /* * Ce code Arduino UNO Q a été développé par newbiely.fr * Ce code Arduino UNO Q 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-uno-q/arduino-uno-q-dip-switch */ from arduino.app_utils import * import requests import time BOT_TOKEN = "YOUR_BOT_TOKEN" API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}" last_update_id = 0 def send_message(chat_id, text): requests.post(f"{API_URL}/sendMessage", json={"chat_id": chat_id, "text": text}) def get_updates(): global last_update_id resp = requests.get(f"{API_URL}/getUpdates", params={"offset": last_update_id + 1, "timeout": 5}) return resp.json().get("result", []) def loop(): global last_update_id updates = get_updates() for update in updates: last_update_id = update["update_id"] msg = update.get("message", {}) chat_id = msg.get("chat", {}).get("id") text = msg.get("text", "").strip() if text == "/state": state = Bridge.call("get_dip_state") send_message(chat_id, state) elif text == "/value": encoded = Bridge.call("get_encoded_state") send_message(chat_id, f"DIP switch encoded value: {encoded}") else: send_message(chat_id, "Commands:\n/state — read each DIP position (ON/OFF)\n/value — get encoded integer value") time.sleep(1) App.run(user_loop=loop)

    Sortie de la Console App Lab

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /state [2026-04-29 12:00:01] DIP State: 1:ON 2:OFF 3:ON 4:OFF value=5
    Telegram
    Telegram 12:45
    Welcome to Telegram!
    ArduinoBot 10:19
    Chatting with Arduino...
    telegram-botfather
    BotFather Yesterday
    Your bot has been created.

    ArduinoBot

    bot
    Today
    /state
    10:15 AM ✓✓
    DIP State: 1:ON 2:OFF 3:ON 4:OFF value=5
    10:16 AM

    OpenClaw

    You can adapt the OpenClaw to this tutorial by refering the instruction on Arduino UNO Q - OpenClaw Tutorial

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