.. note::

    Bonjour, bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi & Arduino & ESP32 sur Facebook ! Plongez plus profondément dans Raspberry Pi, Arduino et ESP32 avec d’autres passionnés.

    **Pourquoi rejoindre ?**

    - **Support d'experts** : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe.
    - **Apprenez & Partagez** : Échangez des astuces et des tutoriels pour améliorer vos compétences.
    - **Aperçus exclusifs** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus.
    - **Réductions spéciales** : Profitez de réductions exclusives sur nos produits les plus récents.
    - **Promotions festives et cadeaux** : Participez à des promotions et à des tirages au sort lors des fêtes.

    👉 Prêt à explorer et créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui !

2.1.2 Interrupteur à glissière
===================================

Introduction
------------

Dans cette leçon, nous allons apprendre à utiliser un interrupteur à glissière. 
Habituellement, l'interrupteur à glissière est soudé sur une carte PCB comme 
interrupteur d'alimentation, mais ici, nous devons l'insérer dans la breadboard, 
donc il pourrait ne pas être bien fixé. Nous l’utilisons sur la breadboard pour 
montrer son fonctionnement.

Composants
-------------

.. image:: img/list_2.1.2_slide_switch.png


Principe
-----------

**Interrupteur à glissière**

.. image:: img/image156.jpeg


Un interrupteur à glissière, comme son nom l'indique, permet de glisser la barre 
de l'interrupteur pour connecter ou rompre le circuit et ainsi basculer entre les 
circuits. Les types les plus couramment utilisés sont SPDT, SPTT, DPDT, DPTT, etc. 
L'interrupteur à glissière est couramment utilisé dans les circuits basse tension. 
Il est caractérisé par sa flexibilité et sa stabilité et est largement utilisé dans 
les instruments électriques et les jouets électriques.

Fonctionnement : La broche du milieu est fixe. Lorsque vous tirez la glissière vers 
la gauche, les deux broches de gauche sont connectées ; lorsque vous la tirez vers la 
droite, les deux broches de droite sont connectées. Ainsi, il fonctionne comme un 
interrupteur reliant ou déconnectant les circuits. Voir l'illustration ci-dessous :

.. image:: img/image304.png


Le symbole du circuit pour l'interrupteur à glissière est montré ci-dessous. La broche 
2 dans le schéma fait référence à la broche du milieu.

.. image:: img/image159.png


**Condensateur**

Le condensateur est un composant capable de stocker de l'énergie sous forme de charge 
électrique ou de produire une différence de potentiel (tension statique) entre ses plaques, 
à l'instar d'une petite batterie rechargeable.

Unités standard de capacité

Microfarad (μF) 1μF = 1/1 000 000 = 0,000001 = :math:`10^{- 6}` F

Nanofarad (nF) 1nF = 1/1 000 000 000 = 0,000000001 = :math:`10^{- 9}`\ F

Picofarad (pF) 1pF = 1/1 000 000 000 000 = 0,000000000001 = :math:`10^{- 12}`\ F

.. note::
    Ici, nous utilisons un **condensateur 104 (10 x 10\ 4\ pF)**. Comme les anneaux des 
    résistances, les numéros sur les condensateurs permettent de lire leurs valeurs une 
    fois assemblés sur la carte. Les deux premiers chiffres représentent la valeur et le 
    dernier chiffre signifie le multiplicateur. Ainsi, 104 représente une puissance de 
    10 x 10 à la 4 (en pF), soit 100 nF.

Schéma de câblage
--------------------

Connectez la broche du milieu de l'interrupteur à glissière à GPIO17 et deux LEDs aux 
roches GPIO22 et GPIO27 respectivement. Lorsque vous faites glisser l'interrupteur, vous 
verrez les deux LEDs s’allumer alternativement.

.. image:: img/image305.png


.. image:: img/image306.png


Procédures expérimentales
-----------------------------

**Étape 1 :** Construire le circuit.

.. image:: img/image161.png
    :width: 800



Pour les utilisateurs de C
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Étape 2** : Accédez au dossier du code.

.. raw:: html

   <run></run>

.. code-block::

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

**Étape 3** : Compilez.

.. raw:: html

   <run></run>

.. code-block::

    gcc 2.1.2_Slider.c -lwiringPi 

**Étape 4** : Exécutez le fichier exécutable.

.. raw:: html

   <run></run>

.. code-block::

    sudo ./a.out

Lorsque le code est en cours d'exécution, si l'interrupteur est déplacé vers la gauche, 
la LED jaune s'allume ; vers la droite, la lumière rouge s'allume.

.. note::

    Si cela ne fonctionne pas après l'exécution ou si un message d'erreur apparaît : \"wiringPi.h: No such file or directory\", veuillez vous référer à :ref:`C code is not working?`.

**Code**

.. code-block:: c

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

    int main(void)
    {
        // Si l'initialisation de wiringPi échoue, afficher un message à l'écran
        if(wiringPiSetup() == -1){
            printf("setup wiringPi failed !");
            return 1;
        }
        pinMode(slidePin, INPUT);
        pinMode(led1, OUTPUT);
        pinMode(led2, OUTPUT);
        while(1){
            // interrupteur à glissière en haut, led1 allumée
            if(digitalRead(slidePin) == 1){
                digitalWrite(led1, LOW);
                digitalWrite(led2, HIGH);
                printf("LED1 on\n");
                delay(100);
            }
            // interrupteur à glissière en bas, led2 allumée
            if(digitalRead(slidePin) == 0){
                digitalWrite(led2, LOW);
                digitalWrite(led1, HIGH);
                printf(".....LED2 on\n");
                delay(100);
            }
        }
        return 0;
    }

**Explication du code**

.. code-block:: c

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

Lorsque l'interrupteur à glissière est tiré vers la droite, la broche du milieu 
et celle de droite sont connectées ; le Raspberry Pi lit un niveau haut sur la 
、broche du milieu, donc la LED1 s'allume et la LED2 s'éteint.

.. code-block:: c

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

Lorsque l'interrupteur à glissière est tiré vers la gauche, la broche du milieu et 
celle de gauche sont connectées ; le Raspberry Pi lit un niveau bas, donc la LED2 
s'allume et la LED1 s'éteint.


Pour les utilisateurs de Python
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

**Étape 2** : Accédez au dossier du code.

.. raw:: html

   <run></run>

.. code-block::

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

**Étape 3** : Exécutez.

.. raw:: html

   <run></run>

.. code-block::

    sudo python3 2.1.2_Slider.py

Lorsque le code est en cours d'exécution, si l'interrupteur est déplacé vers la 
gauche, la LED jaune s'allume ; vers la droite, la lumière rouge s'allume.
**Code**

.. note::

    Vous pouvez **Modifier/Réinitialiser/Copier/Exécuter/Arrêter** le code ci-dessous. 
    Mais avant cela, vous devez accéder au chemin du code source comme ``davinci-kit-for-raspberry-pi/python``.
    
.. raw:: html

    <run></run>

.. code-block:: python

    import RPi.GPIO as GPIO
    import time

    # Définir la broche #17 comme broche de l'interrupteur à glissière, #22 comme broche led1, #27 comme broche led2
    slidePin = 17
    led1Pin = 22
    led2Pin = 27

    # Définir une fonction setup pour quelques configurations
    def setup():
        # Définir les modes GPIO sur le numérotage BCM
        GPIO.setmode(GPIO.BCM)
        # Configurer slidePin en entrée
        # Configurer ledPin en sortie,
        # et niveau initial à High(3,3v)
        GPIO.setup(slidePin, GPIO.IN)
        GPIO.setup(led1Pin, GPIO.OUT, initial=GPIO.HIGH)
        GPIO.setup(led2Pin, GPIO.OUT, initial=GPIO.HIGH)

    # Définir une fonction principale pour le processus principal
    def main():
        while True:
            # interrupteur à glissière haut, led1 allumée
            if GPIO.input(slidePin) == 1:
                print ('LED1 ON')
                GPIO.output(led1Pin, GPIO.LOW)
                GPIO.output(led2Pin, GPIO.HIGH)

            # interrupteur à glissière bas, led2 allumée
            if GPIO.input(slidePin) == 0:
                print ('    LED2 ON')
                GPIO.output(led2Pin, GPIO.LOW)
                GPIO.output(led1Pin, GPIO.HIGH)

            time.sleep(0.5)

    # Définir une fonction destroy pour tout nettoyer après
    # la fin du script
    def destroy():
        # Éteindre les LED
        GPIO.output(led1Pin, GPIO.HIGH)
        GPIO.output(led2Pin, GPIO.HIGH)
        # Libérer les ressources
        GPIO.cleanup()                     

    # Si vous exécutez directement ce script, faites :
    if __name__ == '__main__':
        setup()
        try:
            main()
        # Quand 'Ctrl+C' est appuyé, le programme
        # destroy() sera exécuté.
        except KeyboardInterrupt:
            destroy()

**Explication du code**

.. code-block:: python

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

Lorsque l'interrupteur à glissière est tiré vers la droite, la broche du milieu et 
celle de droite sont connectées ; le Raspberry Pi lit un niveau haut sur la broche 
du milieu, donc la LED1 s'allume et la LED2 s'éteint.

.. code-block:: python

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

Lorsque l'interrupteur à glissière est tiré vers la gauche, la broche du milieu et 
celle de gauche sont connectées ; le Raspberry Pi lit un niveau bas, donc la LED2 
s'allume et la LED1 s'éteint.

Image du phénomène
----------------------

.. image:: img/image162.jpeg

