.. note:: Bonjour, bienvenue dans la communauté SunFounder Raspberry Pi & Arduino & ESP32 sur Facebook ! Plongez plus profondément dans l’univers du Raspberry Pi, d’Arduino et d’ESP32 avec d’autres passionnés. **Pourquoi nous rejoindre ?** - **Assistance d'experts** : Résolvez les problèmes après-vente et surmontez les défis techniques avec l’aide de notre communauté et de notre équipe. - **Apprenez et Partagez** : Échangez des conseils et des tutoriels pour améliorer vos compétences. - **Aperçus exclusifs** : Bénéficiez d’un accès anticipé aux annonces de nouveaux produits et à des avant-premières. - **Réductions spéciales** : Profitez de remises exclusives sur nos derniers produits. - **Promotions festives et concours** : Participez à des concours et à des promotions spéciales. 👉 Prêt à explorer et à créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui ! 2.1.3 Interrupteur à Inclinomètre =================================== Introduction --------------- Il s'agit d'un interrupteur à bascule à bille avec une bille métallique à l'intérieur. Il est utilisé pour détecter de petites inclinaisons angulaires. Composants ----------- .. image:: ../img/list_2.1.3_tilt_switch.png Schéma de câblage -------------------- .. image:: ../img/image307.png .. image:: ../img/image308.png Procédures expérimentales --------------------------- **Étape 1 :** Construire le circuit. .. image:: ../img/image169.png **Étape 2 :** Accéder au dossier du code. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/nodejs/ **Étape 3 :** Exécuter le code. .. raw:: html .. code-block:: sudo node tilt_switch.js Placez l'interrupteur à inclinaison verticalement, et la LED verte s'allumera. Si vous le basculez, la LED rouge s'allumera. Replacez-le verticalement, et la LED verte s'allumera à nouveau. **Code** .. raw:: html .. code-block:: js const Gpio = require('pigpio').Gpio; const led1 = new Gpio(22, { mode: Gpio.OUTPUT }); const led2 = new Gpio(27, { mode: Gpio.OUTPUT }); const tilt = new Gpio(17, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.EITHER_EDGE }); tilt.on('interrupt', (level) => { if (level) { console.log("Horizontally"); } else { console.log("Vertically"); } led1.digitalWrite(level); led2.digitalWrite(!level); }); **Explication du code** .. code-block:: js const Gpio = require('pigpio').Gpio; const led1 = new Gpio(22, { mode: Gpio.OUTPUT }); const led2 = new Gpio(27, { mode: Gpio.OUTPUT }); const tilt = new Gpio(17, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.EITHER_EDGE }); Importer le module ``pigpio`` et créer trois objets : ``led1``, ``led2`` et ``tilt``, pour contrôler l'allumage et l'extinction des LEDs ``led1`` et ``led2`` en lisant le niveau de l'IO du ``tilt``. .. code-block:: js const tilt = new Gpio(17, { mode: Gpio.INPUT, pullUpDown: Gpio.PUD_DOWN, edge: Gpio.EITHER_EDGE }); Créer un objet ``tilt`` pour contrôler le port IO ``Gpio17``, en le définissant en mode d'entrée avec une résistance de tirage vers le bas (initialement en niveau bas). Définir une fonction d'interruption en mode ``EITHER_EDGE``, c’est-à-dire que les deux transitions, montante et descendante, déclencheront la fonction d'interruption. .. code-block:: js tilt.on('interrupt', (level) => { if (level) { console.log("Horizontally"); } else { console.log("Vertically"); } led1.digitalWrite(level); led2.digitalWrite(!level); }); Lorsque l'interruption est déclenchée, écrire le même niveau dans ``led1`` et le niveau opposé dans ``led2``. Lorsque le port IO de ``tilt`` est en niveau haut, le terminal affiche "Position Horizontale". Lorsque le port IO de ``tilt`` est en niveau bas, le terminal affiche "Position Verticale". Image du résultat -------------------- .. image:: ../img/image170.jpeg