.. note:: Ciao, benvenuto nella community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Immergiti più a fondo in Raspberry Pi, Arduino ed ESP32 con altri appassionati. **Perché unirti?** - **Supporto esperto**: Risolvi i problemi post-vendita e le sfide tecniche con l'aiuto della nostra community e del nostro team. - **Impara e Condividi**: Scambia suggerimenti e tutorial per migliorare le tue competenze. - **Anteprime esclusive**: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime. - **Sconti speciali**: Goditi sconti esclusivi sui nostri prodotti più recenti. - **Promozioni festive e omaggi**: Partecipa a omaggi e promozioni festive. 👉 Pronto a esplorare e creare con noi? Clicca su [|link_sf_facebook|] e unisciti oggi stesso! .. _2.1.4_c_pi5: 2.1.4 Interruttore a Slitta ============================== Introduzione ---------------- In questo progetto impareremo a usare un interruttore a slitta. Di solito, l'interruttore a slitta è saldato su PCB come interruttore di alimentazione, ma qui dobbiamo inserirlo nel breadboard, quindi potrebbe non essere ben fissato. Lo utilizziamo sul breadboard per mostrarne la funzione. Componenti necessari ------------------------- In questo progetto abbiamo bisogno dei seguenti componenti. .. image:: ../img/list_2.1.2_slide_switch.png È sicuramente conveniente acquistare un kit completo, ecco il link: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nome - ELEMENTI IN QUESTO KIT - LINK * - Kit Raphael - 337 - |link_Raphael_kit| Puoi anche acquistarli separatamente dai link sottostanti. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUZIONE COMPONENTE - LINK PER L'ACQUISTO * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_led` - |link_led_buy| * - :ref:`cpn_slide_switch` - |link_slide_switch_buy| * - :ref:`cpn_capacitor` - |link_capacitor_buy| Schema elettrico --------------------- Collega il pin centrale dell'interruttore a slitta a GPIO17 e due LED rispettivamente a GPIO22 e GPIO27. Poi, quando sposti l'interruttore, vedrai i due LED accendersi alternativamente. .. image:: ../img/image305.png .. image:: ../img/image306.png Procedure sperimentali ------------------------ **Passo 1:** Costruisci il circuito. .. image:: ../img/image161.png **Passo 2:** Vai nella cartella del codice. .. raw:: html .. code-block:: cd ~/raphael-kit/c/2.1.4 **Passo 3:** Compila. .. raw:: html .. code-block:: gcc 2.1.4_Slider.c -lwiringPi **Passo 4:** Esegui il file eseguibile sopra. .. raw:: html .. code-block:: sudo ./a.out Durante l'esecuzione del codice, se l'interruttore è spostato a sinistra, il LED giallo si accende; a destra, si accende la luce rossa. .. note:: Se non funziona dopo l'esecuzione o compare un messaggio di errore: \"wiringPi.h: No such file or directory\", consulta :ref:`install_wiringpi_pi5`. **Codice** .. code-block:: c #include #include #define slidePin 0 #define led1 3 #define led2 2 int main(void) { // Se l'inizializzazione di wiring fallisce, stampa un messaggio sullo schermo if(wiringPiSetup() == -1){ printf("setup wiringPi failed !"); return 1; } pinMode(slidePin, INPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); while(1){ // interruttore a slitta alto, led1 acceso if(digitalRead(slidePin) == 1){ digitalWrite(led1, LOW); digitalWrite(led2, HIGH); printf("LED1 on\n"); } // interruttore a slitta basso, led2 acceso if(digitalRead(slidePin) == 0){ digitalWrite(led2, LOW); digitalWrite(led1, HIGH); printf(".....LED2 on\n"); } } return 0; } **Spiegazione del codice** .. code-block:: c if(digitalRead(slidePin) == 1){ digitalWrite(led1, LOW); digitalWrite(led2, HIGH); printf("LED1 on\n"); } Quando l'interruttore viene spostato verso destra, il pin centrale e quello di destra sono collegati; il Raspberry Pi legge un livello alto sul pin centrale, quindi LED1 si accende e LED2 si spegne. .. code-block:: c if(digitalRead(slidePin) == 0){ digitalWrite(led2, LOW); digitalWrite(led1, HIGH); printf(".....LED2 on\n"); } Quando l'interruttore viene spostato verso sinistra, il pin centrale e quello di sinistra sono collegati; il Raspberry Pi legge un livello basso, quindi LED2 si accende e LED1 si spegne. Immagine del fenomeno --------------------------- .. image:: ../img/image162.jpeg