Nota

Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirti a noi?

  • Supporto Tecnico Esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.

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

  • Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni durante le festività.

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

2.1.5 Interruttore di Inclinazione

Introduzione

Questo è un interruttore a sfera inclinabile con una pallina metallica all’interno. Viene utilizzato per rilevare piccole inclinazioni angolari.

Componenti Necessari

Per questo progetto, avremo bisogno dei seguenti componenti.

../_images/2.1.5_tilt_switch_list.png

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

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK D’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

LED

ACQUISTA

Interruttore di Inclinazione

-

Schema Elettrico

../_images/2.1.5_tilt_switch_schematic_1.png ../_images/2.1.5_tilt_switch_schematic_2.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.1.5_tilt_switch_circuit.png

Passo 2: Accedi alla cartella del codice.

cd ~/raphael-kit/python-pi5

Passo 3: Esegui.

sudo python3 2.1.5_Tilt_zero.py

Posiziona l’interruttore inclinabile in verticale e il LED verde si accenderà. Se lo inclini, verrà stampato «Tilt!» sullo schermo e il LED rosso si accenderà. Riposizionalo verticalmente e il LED verde si riaccenderà.

Avvertimento

Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..

Code

Nota

Puoi Modificare/Resettare/Copiare/Eseguire/Fermare il codice qui sotto. Ma prima, devi accedere alla directory del codice come raphael-kit/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

#!/usr/bin/env python3
from gpiozero import LED, Button

# Inizializza il sensore di inclinazione e i LED usando GPIO Zero
TiltPin = Button(17, pull_up=False)  # Sensore di inclinazione collegato al pin GPIO 17, resistenza pull-up disabilitata
green_led = LED(27)  # LED verde collegato al pin GPIO 27
red_led = LED(22)   # LED rosso collegato al pin GPIO 22

def detect():
    """
    Detect the tilt sensor state and control the LEDs.
    Turns on the red LED and turns off the green LED when tilted.
    Turns off the red LED and turns on the green LED when not tilted.
    """
    if TiltPin.is_pressed:  # Verifica se il sensore è inclinato
        print('    *************')
        print('    *   Tilt!   *')
        print('    *************')
        red_led.on()   # Accendi LED rosso
        green_led.off()  # Spegni LED verde
    else:  # Se il sensore non è inclinato
        red_led.off()  # Spegni LED rosso
        green_led.on()  # Accendi LED verde

try:
    while True:
        # Controlla continuamente lo stato del sensore di inclinazione e aggiorna i LED
        TiltPin.when_pressed = detect
        TiltPin.when_released = detect

except KeyboardInterrupt:
    # Gestisci un'interruzione da tastiera (Ctrl+C) per uscire dal ciclo in modo pulito
    pass

Spiegazione del Codice

  1. Questa linea imposta lo script per essere eseguito con Python 3 e importa LED e Button da gpiozero per controllare i dispositivi GPIO.

    #!/usr/bin/env python3
    from gpiozero import LED, Button
    
  2. Inizializza il sensore di inclinazione collegato al pin GPIO 17 (con resistenza pull-up disabilitata) e due LED collegati ai pin GPIO 27 e 22.

    # Inizializza il sensore di inclinazione e i LED usando GPIO Zero
    TiltPin = Button(17, pull_up=False)  # Sensore di inclinazione collegato al pin GPIO 17, resistenza pull-up disabilitata
    green_led = LED(27)  # LED verde collegato al pin GPIO 27
    red_led = LED(22)   # LED rosso collegato al pin GPIO 22
    
  3. Definisce la funzione detect, che controlla lo stato del sensore di inclinazione. Se inclinato, accende il LED rosso e spegne il LED verde. Se non inclinato, fa il contrario.

    def detect():
        """
        Detect the tilt sensor state and control the LEDs.
        Turns on the red LED and turns off the green LED when tilted.
        Turns off the red LED and turns on the green LED when not tilted.
        """
        if TiltPin.is_pressed:  # Verifica se il sensore è inclinato
            print('    *************')
            print('    *   Tilt!   *')
            print('    *************')
            red_led.on()   # Accendi LED rosso
            green_led.off()  # Spegni LED verde
        else:  # Se il sensore non è inclinato
            red_led.off()  # Spegni LED rosso
            green_led.on()  # Accendi LED verde
    
  4. Il ciclo principale assegna la funzione detect sia agli eventi when_pressed che when_released del sensore di inclinazione. Il blocco try-except gestisce un’interruzione da tastiera per una chiusura pulita.

    try:
        while True:
            # Controlla continuamente lo stato del sensore di inclinazione e aggiorna i LED
            TiltPin.when_pressed = detect
            TiltPin.when_released = detect
    
    except KeyboardInterrupt:
        # Gestisci un'interruzione da tastiera (Ctrl+C) per uscire dal ciclo in modo pulito
        pass