.. note:: Ciao e benvenuto nella Community di Appassionati di SunFounder per Raspberry Pi, Arduino ed ESP32 su Facebook! Esplora a fondo il mondo di Raspberry Pi, Arduino ed ESP32 insieme a tanti altri appassionati. **Perché Unirsi?** - **Supporto da Esperti**: Risolvi problemi post-vendita e 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 agli annunci dei nuovi prodotti e a contenuti inediti. - **Sconti Speciali**: Approfitta di sconti esclusivi sui nostri prodotti più recenti. - **Promozioni Festive e Giveaway**: Partecipa a concorsi e promozioni festive. 👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _1.3.4_py_pi5: 1.3.4 Relè ============ Introduzione ------------- In questo progetto impareremo a utilizzare un relè. È uno dei componenti più comuni nei sistemi di controllo automatico. Quando tensione, corrente, temperatura, pressione, ecc., raggiungono, superano o scendono al di sotto del valore predefinito, il relè connetterà o interromperà il circuito per controllare e proteggere l'apparecchiatura. Componenti Necessari ------------------------------ In questo progetto, abbiamo bisogno dei seguenti componenti. .. image:: ../python_pi5/img/1.3.4_relay_list.png .. raw:: html
Schema Elettrico ------------------- .. image:: ../python_pi5/img/1.3.4_relay_schematic.png Procedure Sperimentali -------------------------- **Passo 1:** Costruisci il circuito. .. image:: ../python_pi5/img/1.3.4_relay_circuit.png **Passo 2:** Apri il file del codice. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 **Passo 3:** Esegui. .. raw:: html .. code-block:: sudo python3 1.3.4_Relay.py Quando il codice è in esecuzione, il LED si accende. Inoltre, puoi sentire un ticchettio causato dall'apertura del contatto normalmente chiuso e dalla chiusura del contatto normalmente aperto. .. warning:: Se compare l'errore ``RuntimeError: Cannot determine SOC peripheral base address``, consulta :ref:`faq_soc` **Codice** .. note:: Puoi **Modificare/Reimpostare/Copiare/Eseguire/Interrompere** il codice qui sotto. Prima di farlo, però, vai al percorso del codice sorgente, come ``davinci-kit-for-raspberry-pi/python-pi5``. Dopo aver modificato il codice, potrai eseguirlo direttamente per vedere il risultato. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import OutputDevice # Importa la classe per il controllo dei pin GPIO from time import sleep # Importa la funzione sleep per i ritardi # Inizializza il relè collegato al pin GPIO 17 relay = OutputDevice(17) try: # Ciclo per commutare continuamente lo stato del relè ogni secondo while True: print('Relay open...') # Indica che il relè è attivo relay.on() # Accende il relè (assumendo configurazione attiva a bassa) sleep(1) # Mantiene il relè nello stato acceso per 1 secondo print('...Relay close') # Indica che il relè è disattivo relay.off() # Spegne il relè sleep(1) # Mantiene il relè nello stato spento per 1 secondo except KeyboardInterrupt: # Gestisce l'interruzione da tastiera (Ctrl+C) per uscire dal ciclo relay.off() # Garantisce che il relè sia spento prima di uscire pass **Spiegazione del Codice** #. Importa ``OutputDevice`` da ``gpiozero`` per il controllo dei pin GPIO e ``sleep`` da ``time`` per aggiungere ritardi. .. code-block:: python #!/usr/bin/env python3 from gpiozero import OutputDevice # Importa la classe per il controllo dei pin GPIO from time import sleep # Importa la funzione sleep per i ritardi #. Inizializza un oggetto ``OutputDevice`` per il relè collegato al pin GPIO 17. .. code-block:: python # Inizializza il relè collegato al pin GPIO 17 relay = OutputDevice(17) #. All'interno del blocco ``try``, un ciclo ``while True`` commuta continuamente lo stato del relè. Il relè viene acceso e spento con un ritardo di 1 secondo tra ogni stato, accompagnato da messaggi di stampa nella console. .. code-block:: python try: # Ciclo per commutare continuamente lo stato del relè ogni secondo while True: print('Relay open...') # Indica che il relè è attivo relay.on() # Accende il relè (assumendo configurazione attiva a bassa) sleep(1) # Mantiene il relè nello stato acceso per 1 secondo print('...Relay close') # Indica che il relè è disattivo relay.off() # Spegne il relè sleep(1) # Mantiene il relè nello stato spento per 1 secondo #. Rileva un'interruzione da tastiera (come Ctrl+C) per permettere una terminazione sicura dello script. Il relè viene spento prima di uscire dallo script. .. code-block:: python except KeyboardInterrupt: # Gestisce l'interruzione da tastiera (Ctrl+C) per uscire dal ciclo relay.off() # Garantisce che il relè sia spento prima di uscire pass