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 [Ici] 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

../_images/list_2.1.3_tilt_switch.png

Schéma de câblage

../_images/image307.png ../_images/image308.png

Procédures expérimentales

Étape 1 : Construire le circuit.

../_images/image169.png

Étape 2 : Accéder au dossier du code.

cd ~/davinci-kit-for-raspberry-pi/nodejs/

Étape 3 : Exécuter le code.

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

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

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.

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.

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

../_images/image170.jpeg