.. 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.2_py:

2.1.2 Mikroschalter
======================

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

In diesem Projekt lernen wir den Umgang mit einem Mikroschalter. Ein Mikroschalter ist ein kleiner, sehr empfindlicher Schalter, der nur minimalen Druck benötigt, um aktiviert zu werden. Wegen ihrer Zuverlässigkeit und Empfindlichkeit werden Mikroschalter oft als Sicherheitsvorrichtung eingesetzt.

Sie verhindern beispielsweise, dass Türen schließen, wenn sich jemand oder etwas im Weg befindet und haben ähnliche Anwendungen.

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

Für dieses Projekt benötigen wir folgende Komponenten:

.. image:: ../img/2.1.2component.png

Es ist definitiv praktisch, ein ganzes 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|

Die Komponenten können auch einzeln über die untenstehenden Links erworben werden.

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

    *   - KOMPONENTENVORSTELLUNG
        - 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_micro_switch`
        - \-
    *   - :ref:`cpn_capacitor`
        - |link_capacitor_buy|

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

Verbinde den linken Pin des Mikroschalters mit GPIO17 und zwei LEDs jeweils mit den Pins GPIO22 und GPIO27. Wenn du den beweglichen Arm des Mikroschalters drückst und wieder loslässt, leuchten die beiden LEDs abwechselnd auf.

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

.. image:: ../img/micro_Schematic.png

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

**Schritt 1:** Baue den Schaltkreis auf.

.. image:: ../img/2.1.4fritzing.png

**Schritt 2**: Gehe in den Ordner mit dem Code.

.. raw:: html

   <run></run>

.. code-block::

    cd ~/raphael-kit/python

**Schritt 3**: Ausführen.

.. raw:: html

   <run></run>

.. code-block::

    sudo python3 2.1.2_MicroSwitch.py

Während der Code ausgeführt wird, drücke den beweglichen Arm, dann leuchtet die gelbe LED auf; lasse den beweglichen Arm los, und die rote LED schaltet sich ein.

**Code**

.. note::

    Den untenstehenden Code können Sie **Ändern/Zurücksetzen/Kopieren/Ausführen/Stoppen**. Bevor Sie das tun, sollten Sie jedoch zum Quellcode-Pfad wie ``raphael-kit/python`` gehen. Nach der Modifizierung können Sie den Code direkt ausführen, um das Ergebnis zu sehen.


.. raw:: html

    <run></run>

.. code-block:: python

    #!/usr/bin/env python3

    import RPi.GPIO as GPIO
    import time

    # Set #17 as micro switch pin, #22 as led1 pin, #27 as led2 pin
    microPin = 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 microPin input
        # Set ledPin output, 
        # and initial level to High(3.3v)
        GPIO.setup(microPin, 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:
            # micro switch high, led1 on
            if GPIO.input(microPin) == 1:
                print ('LED1 ON')
                GPIO.output(led1Pin, GPIO.LOW)
                GPIO.output(led2Pin, GPIO.HIGH)

            # micro switch low, led2 on
            if GPIO.input(microPin) == 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 bewegliche Arm des Mikroschalters losgelassen wird, wird der linke Pin mit dem rechten Pin verbunden; zu diesem Zeitpunkt wird ein hohes Signal auf GPIO17 gelesen, und dann wird LED1 eingeschaltet und LED2 ausgeschaltet.

.. code-block:: python

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

Wenn der bewegliche Arm gedrückt wird, werden der linke Pin und der mittlere Pin verbunden. Zu diesem Zeitpunkt wird ein niedriges Signal auf GPIO17 gelesen, dann wird LED2 eingeschaltet und LED1 ausgeschaltet.

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

.. image:: ../img/2.1.2micro_switch.JPG