Nota

Ciao, benvenuto nella Community di SunFounder Raspberry Pi, Arduino e ESP32 Enthusiasts su Facebook! Unisciti a noi per approfondire Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirsi?

  • Supporto tecnico esperto: Risolvi problematiche post-vendita e sfide tecniche grazie all’aiuto della nostra comunità e del nostro team.

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

  • Anteprime esclusive: Ottieni un accesso anticipato ai nuovi annunci di prodotti e alle anteprime.

  • Sconti speciali: Goditi sconti esclusivi sui nostri nuovi prodotti.

  • Promozioni e giveaway: Partecipa a promozioni festive e concorsi con premi.

👉 Pronto a esplorare e creare con noi? Clicca [Qui] e unisciti subito!

2.1.2 Interruttore a Slitta

Introduzione

In questa lezione, impareremo come utilizzare un interruttore a slitta. Di solito, l’interruttore a slitta viene saldato su una scheda PCB come interruttore di alimentazione, ma qui è necessario inserirlo nel breadboard, quindi potrebbe non essere completamente stabile. Lo utilizziamo sul breadboard per mostrare la sua funzione.

Componenti

_images/list_2.1.2_slide_switch.png

Principio di Funzionamento

Interruttore a Slitta

_images/image156.jpeg

Un interruttore a slitta, come suggerisce il nome, funziona facendo scorrere la leva per collegare o interrompere il circuito, e quindi cambiare i circuiti. I tipi più comuni sono SPDT, SPTT, DPDT, DPTT, ecc. L’interruttore a slitta è comunemente usato in circuiti a bassa tensione. È caratterizzato da flessibilità e stabilità ed è ampiamente applicato in strumenti elettrici e giocattoli elettrici.

Come funziona: imposta il pin centrale come fisso. Quando si sposta la slitta a sinistra, i due pin a sinistra si collegano; spostandola a destra, si collegano i due pin a destra. In questo modo funziona come un interruttore che connette o disconnette i circuiti. Vedi la figura sotto:

_images/image304.png

Il simbolo del circuito per l’interruttore a slitta è mostrato qui sotto. Il pin2 nella figura rappresenta il pin centrale.

_images/image159.png

Condensatore

Il condensatore è un componente in grado di immagazzinare energia sotto forma di carica elettrica o di produrre una differenza di potenziale (tensione statica) tra le sue piastre, proprio come una piccola batteria ricaricabile.

Unità standard di capacità

Microfarad (μF) 1μF = 1/1.000.000 = 0,000001 = \(10^{- 6}\) F

Nanofarad (nF) 1nF = 1/1.000.000.000 = 0,000000001 = \(10^{- 9}\)F

Picofarad (pF) 1pF = 1/1.000.000.000.000 = 0,000000000001 = \(10^{- 12}\)F

Nota

Qui utilizziamo un condensatore 104 (10 x 104PF). Come per le resistenze, i numeri sui condensatori aiutano a leggere i valori una volta montati. Le prime due cifre rappresentano il valore e l’ultima cifra indica il moltiplicatore. Così, 104 rappresenta un valore di 10 x 10^4 (in pF), pari a 100 nF.

Schema Elettrico

Collega il pin centrale dell’interruttore a slitta al GPIO17 e due LED ai pin GPIO22 e GPIO27 rispettivamente. Quando sposterai la slitta, vedrai i due LED accendersi alternativamente.

_images/image305.png _images/image306.png

Procedura Sperimentale

Passo 1: Assembla il circuito.

_images/image161.png

Per Utenti Linguaggio C

Passo 2: Vai alla cartella del codice.

cd ~/davinci-kit-for-raspberry-pi/c/2.1.2

Passo 3: Compila.

gcc 2.1.2_Slider.c -lwiringPi

Passo 4: Esegui il file eseguibile.

sudo ./a.out

Mentre il codice è in esecuzione, collega l’interruttore a sinistra e il LED giallo si accenderà; spostalo a destra e si accenderà la luce rossa.

Nota

Se non funziona dopo l’esecuzione, o compare un messaggio di errore: "wiringPi.h: No such file or directory», fai riferimento a Il codice C non funziona?.

Codice

#include <wiringPi.h>
#include <stdio.h>
#define slidePin        0
#define led1            3
#define led2            2

int main(void)
{
    // Se l'inizializzazione di wiringPi fallisce, stampa un messaggio
    if(wiringPiSetup() == -1){
        printf("setup wiringPi failed !");
        return 1;
    }
    pinMode(slidePin, INPUT);
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    while(1){
        // interruttore a slitta in alto, led1 acceso
        if(digitalRead(slidePin) == 1){
            digitalWrite(led1, LOW);
            digitalWrite(led2, HIGH);
            printf("LED1 on\n");
            delay(100);
        }
        // interruttore a slitta in basso, led2 acceso
        if(digitalRead(slidePin) == 0){
            digitalWrite(led2, LOW);
            digitalWrite(led1, HIGH);
            printf(".....LED2 on\n");
            delay(100);
        }
    }
    return 0;
}

Spiegazione del Codice

if(digitalRead(slidePin) == 1){
            digitalWrite(led1, LOW);
            digitalWrite(led2, HIGH);
            printf("LED1 on\n");
    }

Quando l’interruttore a slitta viene spostato a destra, il pin centrale e quello di destra si collegano; il Raspberry Pi legge un livello alto sul pin centrale, quindi il LED1 si accende mentre LED2 si spegne.

if(digitalRead(slidePin) == 0){
            digitalWrite(led2, LOW);
            digitalWrite(led1, HIGH);
            printf(".....LED2 on\n");
        }

Quando l’interruttore a slitta viene spostato a sinistra, il pin centrale e quello di sinistra si collegano; il Raspberry Pi legge un livello basso, quindi il LED2 si accende mentre LED1 si spegne.

Per Utenti Python

Passo 2: Vai alla cartella del codice.

cd ~/davinci-kit-for-raspberry-pi/python

Passo 3: Esegui.

sudo python3 2.1.2_Slider.py

Durante l’esecuzione del codice, se l’interruttore è posizionato a sinistra, il LED giallo si accende; a destra, si accende la luce rossa.

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Arrestare il codice qui sotto. Tuttavia, prima di farlo, devi accedere al percorso del codice sorgente come davinci-kit-for-raspberry-pi/python.

import RPi.GPIO as GPIO
import time

# Imposta il pin #17 per l'interruttore a slitta, #22 per led1, #27 per led2
slidePin = 17
led1Pin = 22
led2Pin = 27

# Definisci una funzione di setup per alcune impostazioni
def setup():
    # Imposta i pin GPIO in modalità BCM
    GPIO.setmode(GPIO.BCM)
    # Imposta slidePin come ingresso
    # Imposta ledPin come uscita,
    # e il livello iniziale su High (3.3v)
    GPIO.setup(slidePin, GPIO.IN)
    GPIO.setup(led1Pin, GPIO.OUT, initial=GPIO.HIGH)
    GPIO.setup(led2Pin, GPIO.OUT, initial=GPIO.HIGH)

# Definisci una funzione principale per il processo principale
def main():
    while True:
        # interruttore a slitta alto, led1 acceso
        if GPIO.input(slidePin) == 1:
            print ('LED1 ON')
            GPIO.output(led1Pin, GPIO.LOW)
            GPIO.output(led2Pin, GPIO.HIGH)

        # interruttore a slitta basso, led2 acceso
        if GPIO.input(slidePin) == 0:
            print ('    LED2 ON')
            GPIO.output(led2Pin, GPIO.LOW)
            GPIO.output(led1Pin, GPIO.HIGH)

        time.sleep(0.5)

# Definisci una funzione destroy per pulire tutto dopo
# che lo script è terminato
def destroy():
    # Spegni i LED
    GPIO.output(led1Pin, GPIO.HIGH)
    GPIO.output(led2Pin, GPIO.HIGH)
    # Libera le risorse
    GPIO.cleanup()

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

Spiegazione del Codice

if GPIO.input(slidePin) == 1:
    GPIO.output(led1Pin, GPIO.LOW)
    GPIO.output(led2Pin, GPIO.HIGH)

Quando l’interruttore a slitta viene spostato a destra, il pin centrale e quello di destra sono connessi; il Raspberry Pi rileva un livello alto sul pin centrale, quindi LED1 si accende e LED2 si spegne.

if GPIO.input(slidePin) == 0:
    GPIO.output(led2Pin, GPIO.LOW)
    GPIO.output(led1Pin, GPIO.HIGH)

Quando l’interruttore a slitta viene spostato a sinistra, il pin centrale e quello di sinistra sono connessi; il Raspberry Pi rileva un livello basso, quindi LED2 si accende e LED1 si spegne.

Immagine del Fenomeno

_images/image162.jpeg