Nota

Ciao, benvenuto nella Community di appassionati di Raspberry Pi, Arduino e ESP32 di SunFounder su Facebook! Approfondisci le tue conoscenze su Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Ottieni accesso anticipato ai nuovi annunci di prodotti e alle anteprime.

  • Sconti speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni festive e giveaway: Partecipa a concorsi e promozioni durante le festività.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi stesso!

2.1.5 Interruttore a Inclinazione

Introduzione

Questo è un interruttore a inclinazione con una sfera di metallo all’interno. Viene utilizzato per rilevare inclinazioni di piccolo angolo.

Componenti necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/list_2.1.3_tilt_switch.png

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

OGGETTI IN QUESTO KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK PER L’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Interruttore di Inclinazione

-

Schema elettrico

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

Procedure sperimentali

Passo 1: Costruisci il circuito.

../_images/image169.png

Passo 2: Vai alla cartella del codice.

cd ~/raphael-kit/nodejs/

Passo 3: Esegui il codice.

sudo node tilt_switch.js

Posiziona l’interruttore di inclinazione in posizione verticale e il LED verde si accenderà. Se lo inclini, si accenderà il LED rosso. Rimetti l’interruttore in posizione verticale e il LED verde si riaccenderà.

Codice

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);
});

Spiegazione del Codice

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
});

Importa il modulo pigpio e crea tre oggetti: led1, led2 e tilt, controllando l’accensione e lo spegnimento di led1 e led2 leggendo il livello della porta IO di tilt.

const tilt = new Gpio(17, {
    mode: Gpio.INPUT,
    pullUpDown: Gpio.PUD_DOWN,
    edge: Gpio.EITHER_EDGE
});

Crea un oggetto tilt per controllare la porta IO Gpio17, impostalo in modalità input con resistenza pull-down (inizialmente livello basso). Imposta la funzione di interrupt, la modalità è EITHER_EDGE, ovvero sia i fronti di salita che di discesa attiveranno la funzione di interrupt.

tilt.on('interrupt', (level) => {
    if (level) {
        console.log("Horizontally");
    }
    else {
        console.log("Vertically");
    }
    led1.digitalWrite(level);
    led2.digitalWrite(!level);
});

Quando viene attivato l’interrupt, scrivi lo stesso livello su led1 e il livello opposto su led2. Quando il livello della porta IO di tilt è alto, il terminale stampa «Orizzontale»; Quando il livello della porta IO di tilt è basso, il terminale stampa «Verticale».

Immagine del fenomeno

../_images/image170.jpeg