Nota

Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community 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 comunità e del nostro team.

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

  • Anteprime esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e anteprime speciali.

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

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

👉 Sei 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 metallica 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 comodo acquistare un kit completo, ecco il link:

Nome

ARTICOLI IN QUESTO KIT

LINK

Kit Raphael

337

Raphael Kit

Puoi anche acquistarli separatamente dai link qui sotto.

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: Cambia directory.

cd ~/raphael-kit/python/

Passo 3: Esegui.

sudo python3 2.1.5_Tilt.py

Posiziona l’interruttore a inclinazione in verticale e il LED verde si accenderà. Se lo inclini, verrà stampato «Inclinato!» sullo schermo e il LED rosso si accenderà. Rimettilo in verticale e il LED verde si riaccenderà.

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice qui sotto. Ma prima devi accedere al percorso del codice come raphael-kit/python. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.

import RPi.GPIO as GPIO

TiltPin = 17
Gpin   = 27
Rpin   = 22

def setup():
    GPIO.setmode(GPIO.BCM)       # Numerazione GPIO in base alla posizione fisica
    GPIO.setup(Gpin, GPIO.OUT)     # Imposta il Pin LED Verde come output
    GPIO.setup(Rpin, GPIO.OUT)     # Imposta il Pin LED Rosso come output
    GPIO.setup(TiltPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)    # Imposta BtnPin come input, con pull-up a livello alto (3.3V)
    GPIO.add_event_detect(TiltPin, GPIO.BOTH, callback=detect, bouncetime=200)

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
    if x == 1:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)

def Print(x):
    if x == 0:
        print ('    *************')
        print ('    *   Tilt!   *')
        print ('    *************')

def detect(chn):
    Led(GPIO.input(TiltPin))
    Print(GPIO.input(TiltPin))

def loop():
    while True:
        pass

def destroy():
    GPIO.output(Gpin, GPIO.HIGH)       # Spegni il LED Verde
    GPIO.output(Rpin, GPIO.HIGH)       # Spegni il LED Rosso
    GPIO.cleanup()                     # Rilascia le risorse

if __name__ == '__main__':     # Il programma inizia qui
    setup()
    try:
        loop()
    except KeyboardInterrupt:  # Quando viene premuto 'Ctrl+C', il programma destroy() verrà eseguito.
        destroy()

Spiegazione del Codice

GPIO.add_event_detect(TiltPin, GPIO.BOTH, callback=detect, bouncetime=200)

Imposta un rilevamento su TiltPin, con funzione di callback «detect».

def Led(x):
    if x == 0:
        GPIO.output(Rpin, 1)
        GPIO.output(Gpin, 0)
    if x == 1:
        GPIO.output(Rpin, 0)
        GPIO.output(Gpin, 1)

Definisci una funzione Led() per accendere o spegnere i due LED. Se x=0, si accende il LED rosso; altrimenti, si accende il LED verde.

def Print(x):
    if x == 0:
        print ('    *************')
        print ('    *   Tilt!   *')
        print ('    *************')

Crea una funzione Print() per stampare i caratteri sopra sullo schermo.

def detect(chn):
    Led(GPIO.input(TiltPin))
    Print(GPIO.input(TiltPin))

Definisci una funzione di callback per l’interruttore a inclinazione. Ottieni il valore letto dall’interruttore a inclinazione, e poi la funzione Led() controlla l’accensione o lo spegnimento dei due LED, in base al valore letto.

Immagine del Fenomeno

../_images/image170.jpeg