.. note::
Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 con altri appassionati.
**Perché Unirsi?**
- **Supporto Esperto**: Risolvi problemi post-vendita e sfide tecniche con l'aiuto della nostra comunità e del nostro team.
- **Impara & Condividi**: Scambia consigli e tutorial per migliorare le tue competenze.
- **Anteprime Esclusive**: Ottieni accesso anticipato agli annunci dei nuovi prodotti.
- **Sconti Speciali**: Godi di sconti esclusivi sui nostri prodotti più recenti.
- **Promozioni Festive e Omaggi**: Partecipa a omaggi e promozioni speciali per le festività.
👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso!
2.1.3 Interruttore a Inclinazione
=======================================
Introduzione
---------------
Questo è un interruttore a inclinazione a sfera con una sfera di metallo
all'interno. Viene utilizzato per rilevare inclinazioni di un piccolo angolo.
Componenti
-----------
.. image:: ../img/list_2.1.3_tilt_switch.png
Schema a Blocchi
------------------
.. image:: ../img/image307.png
.. image:: ../img/image308.png
Procedure Sperimentali
-----------------------
**Passo 1:** Costruisci il circuito.
.. image:: ../img/image169.png
**Passo 2:** Vai alla cartella del codice.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**Passo 3:** Esegui il codice.
.. raw:: html
.. code-block::
sudo node tilt_switch.js
Posiziona l'interruttore verticalmente e il LED verde si accenderà.
Se lo inclini, il LED rosso si accenderà.
Rimettendolo in posizione verticale, il LED verde si riaccenderà.
**Codice**
.. 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);
});
**Spiegazione del Codice**
.. 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
});
Importa il modulo pigpio e crea tre oggetti: led1, led2, e tilt.
Controlla l'accensione e lo spegnimento di led1 e led2 leggendo
il livello del pin di tilt.
.. code-block:: js
const tilt = new Gpio(17, {
mode: Gpio.INPUT,
pullUpDown: Gpio.PUD_DOWN,
edge: Gpio.EITHER_EDGE
});
Crea un oggetto tilt per controllare il pin Gpio17, impostandolo come input con resistenza pull-down (inizialmente a livello basso).
Imposta inoltre una funzione di interrupt che viene attivata su entrambi i fronti (EITHER_EDGE), quindi sia in salita che in discesa.
.. code-block:: js
tilt.on('interrupt', (level) => {
if (level) {
console.log("Horizontally");
}
else {
console.log("Vertically");
}
led1.digitalWrite(level);
led2.digitalWrite(!level);
});
Quando si attiva l'interrupt, il livello letto viene assegnato a led1, mentre a led2 viene assegnato il livello opposto.
Se il livello del pin tilt è alto, il terminale visualizza "Orizzontale";
Se il livello del pin tilt è basso, il terminale visualizza "Verticale".
Immagine del Fenomeno
------------------------
.. image:: ../img/image170.jpeg