.. 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