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.1 Pulsante

Introduzione

In questo progetto, impareremo come accendere o spegnere un LED utilizzando un pulsante.

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/list_2.1.1_Button.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

Pulsante

ACQUISTA

Schema Elettrico

Usa un pulsante normalmente aperto come ingresso per Raspberry Pi, la connessione è mostrata nello schema elettrico qui sotto. Quando il pulsante viene premuto, il GPIO18 si porterà a livello basso (0V). Possiamo rilevare lo stato del GPIO18 tramite programmazione. In pratica, se il GPIO18 si porta a livello basso, significa che il pulsante è stato premuto. Puoi eseguire il codice corrispondente quando il pulsante viene premuto, facendo così accendere il LED.

Nota

Il pin più lungo del LED è l’anodo e quello più corto è il catodo.

../_images/image302.png ../_images/image303.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/image152.png

Passo 2: Apri il file del codice.

cd ~/raphael-kit/python

Passo 3: Esegui il codice.

sudo python3 2.1.1_Button.py

Ora, premi il pulsante e il LED si accenderà; premi di nuovo il pulsante e il LED si spegnerà. Allo stesso tempo, lo stato del LED sarà stampato sullo schermo.

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
import time
LedPin = 17  # Imposta GPIO17 come pin del LED
BtnPin = 18  # Imposta GPIO18 come pin del pulsante

# Imposta lo stato del LED su True (SPENTO)
Led_status = True

# Definisci una funzione di setup per alcune impostazioni iniziali
def setup():
    # Imposta la modalità GPIO su BCM
    GPIO.setmode(GPIO.BCM)
    # Imposta la modalità di LedPin su output,
    # e il livello iniziale su alto (3.3v)
    GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH)
    # Imposta la modalità di BtnPin su input,
    # e collegamento a 3.3V (pull-up)
    GPIO.setup(BtnPin, GPIO.IN)


# Definisci una funzione di callback per il pulsante
def swLed(ev=None):
    global Led_status
    # Cambia lo stato del LED (acceso-->spento; spento-->acceso)
    Led_status = not Led_status
    GPIO.output(LedPin, Led_status)
    if Led_status:
        print ('LED OFF...')
    else:
        print ('...LED ON')

# Definisci una funzione main per il processo principale
def main():
# Imposta una rilevazione del fronte di discesa su BtnPin,
    # e funzione di callback su swLed
    GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=swLed)
    while True:
        # Non fare nulla.
        time.sleep(1)

# Definisci una funzione destroy per pulire tutto dopo
# la fine dello script
def destroy():
    # Spegni il LED
    GPIO.output(LedPin, GPIO.HIGH)
    # Rilascia le risorse
    GPIO.cleanup()

# Se esegui questo script direttamente, fai:
if __name__ == '__main__':
    setup()
    try:
        main()
    # Quando viene premuto 'Ctrl+C', il programma
    # destroy() verrà eseguito.
    except KeyboardInterrupt:
        destroy()

Spiegazione del Codice

LedPin = 17

Imposta GPIO17 come pin del LED.

BtnPin = 18

Imposta GPIO18 come pin del pulsante.

GPIO.add_event_detect(BtnPin, GPIO.FALLING, callback=swLed)

Imposta una rilevazione del fronte di discesa su BtnPin, quindi quando il valore di BtnPin cambia da alto a basso, significa che il pulsante è stato premuto. Il passo successivo è chiamare la funzione swLed.

def swLed(ev=None):
global Led_status
# Cambia lo stato del LED (acceso-->spento; spento-->acceso)
Led_status = not Led_status
GPIO.output(LedPin, Led_status)

Definisci una funzione di callback come callback del pulsante. Quando il pulsante viene premuto per la prima volta e la condizione, not Led_status, è falsa, viene chiamata la funzione GPIO.output() per accendere il LED. Quando il pulsante viene premuto nuovamente, lo stato del LED passerà da falso a vero, spegnendo così il LED.

Immagine del Fenomeno

../_images/image153.jpeg