.. note::

    Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

    **Warum beitreten?**

    - **Expertenunterstützung**: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
    - **Lernen & Teilen**: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
    - **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
    - **Spezialrabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
    - **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

    👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [|link_sf_facebook|] und treten Sie heute bei!

.. _2.1.4_py:

2.1.4 Schiebeschalter
=======================

Einführung
------------

In diesem Projekt werden wir lernen, wie man einen Schiebeschalter verwendet. Normalerweise wird der
Schiebeschalter auf einer PCB als Ein-/Ausschalter gelötet, aber hier müssen wir ihn
in das Steckbrett einsetzen, wodurch er möglicherweise nicht fest sitzt. Und wir verwenden
ihn auf dem Steckbrett, um seine Funktion zu zeigen.

Benötigte Komponenten
------------------------------

Für dieses Projekt benötigen wir die folgenden Komponenten.

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

Es ist definitiv praktisch, ein komplettes Set zu kaufen, hier ist der Link:

.. list-table::
    :widths: 20 20 20
    :header-rows: 1

    *   - Name	
        - ARTIKEL IN DIESEM KIT
        - LINK
    *   - Raphael Kit
        - 337
        - |link_Raphael_kit|

Sie können diese auch separat über die untenstehenden Links kaufen.

.. list-table::
    :widths: 30 20
    :header-rows: 1

    *   - KOMPONENTENBESCHREIBUNG
        - KAUF-LINK

    *   - :ref:`cpn_gpio_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|

Schaltplan
---------------------

Verbinden Sie den mittleren Pin des Schiebeschalters mit GPIO17 und zwei LEDs mit
Pin GPIO22 und GPIO27 jeweils. Wenn Sie dann den Schiebeschalter betätigen, 
sehen Sie, wie die beiden LEDs abwechselnd leuchten.

.. image:: ../img/image305.png

.. image:: ../img/image306.png

Experimentelle Verfahren
----------------------------

**Schritt 1:** Bauen Sie den Schaltkreis.

.. image:: ../img/image161.png

**Schritt 2**: Wechseln Sie in den Ordner des Codes.

.. raw:: html

   <run></run>

.. code-block::

    cd ~/raphael-kit/python

**Schritt 3**: Starten.

.. raw:: html

   <run></run>

.. code-block::

    sudo python3 2.1.4_Slider.py

Während der Code läuft, verbinden Sie den Schalter mit der linken Seite, dann
leuchtet die gelbe LED auf; zur rechten Seite leuchtet das rote Licht.

**Code**

.. note::

    Sie können den untenstehenden Code **Bearbeiten/Zurücksetzen/Kopieren/Starten/Stoppen**. Aber zuerst müssen Sie zum Quellcode-Pfad wie ``raphael-kit/python`` gehen. Nach der Bearbeitung können Sie ihn direkt ausführen, um den Effekt zu sehen.


.. raw:: html

    <run></run>

.. code-block:: python

    import RPi.GPIO as GPIO
    import time

    # Set GPIO17 as slide switch pin, GPIO22 as led1 pin, GPIO27 as led2 pin
    slidePin = 17
    led1Pin = 22
    led2Pin = 27

    # Define a setup function for some setup
    def setup():
        # Set the GPIO modes to BCM Numbering
        GPIO.setmode(GPIO.BCM)
        # Set slidePin input
        # Set ledPin output,
        # and initial level to High(3.3v)
        GPIO.setup(slidePin, GPIO.IN)
        GPIO.setup(led1Pin, GPIO.OUT, initial=GPIO.HIGH)
        GPIO.setup(led2Pin, GPIO.OUT, initial=GPIO.HIGH)

    # Define a main function for main process
    def main():
        while True:
            # slide switch high, led1 on
            if GPIO.input(slidePin) == 1:
                print ('    LED1 ON    ')
                GPIO.output(led1Pin, GPIO.LOW)
                GPIO.output(led2Pin, GPIO.HIGH)

            # slide switch low, led2 on
            if GPIO.input(slidePin) == 0:
                print ('    LED2 ON    ')
                GPIO.output(led2Pin, GPIO.LOW)
                GPIO.output(led1Pin, GPIO.HIGH)

            time.sleep(0.5)
    # Define a destroy function for clean up everything after
    # the script finished
    def destroy():
        # Turn off LED
        GPIO.output(led1Pin, GPIO.HIGH)
        GPIO.output(led2Pin, GPIO.HIGH)
        # Release resource
        GPIO.cleanup()                    

    # If run this script directly, do:
    if __name__ == '__main__':
        setup()
        try:
            main()
        # When 'Ctrl+C' is pressed, the program
        # destroy() will be  executed.
        except KeyboardInterrupt:
            destroy()   

**Code-Erklärung**

.. code-block:: python

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

Wenn der Schiebeschalter nach rechts gezogen wird, sind der mittlere Pin und der rechte Pin
verbunden; der Raspberry Pi liest am mittleren Pin ein hohes Signal, daher ist
die LED1 an und die LED2 aus.

.. code-block:: python

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

Wenn der Schiebeschalter nach links gezogen wird, sind der mittlere Pin und der linke Pin
verbunden; der Raspberry Pi liest ein niedriges Signal, daher ist
die LED2 an und die LED1 aus.

Phänomen-Bild
-------------

.. image:: ../img/image162.jpeg


