.. 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_pi5:
2.1.2 Mikroschalter
=================================
Einleitung
------------------
In diesem Projekt lernen wir, wie man einen Mikroschalter verwendet. Ein Mikroschalter ist ein kleiner, sehr empfindlicher Schalter, der zum Aktivieren nur minimalen Druck benötigt. Aufgrund ihrer Zuverlässigkeit und Empfindlichkeit werden Mikroschalter oft als Sicherheitsvorrichtung verwendet.
Sie kommen zum Einsatz, um zu verhindern, dass Türen schließen, wenn sich etwas oder jemand im Weg befindet, und für ähnliche Anwendungen.
Benötigte Komponenten
-------------------------------
Für dieses Projekt benötigen wir die folgenden Komponenten.
.. image:: ../python_pi5/img/2.1.2_micro_switch_list.png
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Name
- IN DIESEM KIT ENTHALTENE TEILE
- LINK
* - Raphael Kit
- 337
- |link_Raphael_kit|
Sie können sie auch separat über die unten stehenden Links kaufen.
.. 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
-------------------
Verbinden Sie den linken Pin des Mikroschalters mit GPIO17 und zwei LEDs mit den Pins GPIO22 und GPIO27. Wenn Sie den Bewegungsarm des Mikroschalters drücken und loslassen, können Sie sehen, wie die beiden LEDs abwechselnd aufleuchten.
.. image:: ../python_pi5/img/2.1.2_micro_switch_schematic_1.png
.. image:: ../python_pi5/img/2.1.2_micro_switch_schematic_2.png
Experimentelle Verfahren
----------------------------------
**Schritt 1**: Bauen Sie den Schaltkreis auf.
.. image:: ../python_pi5/img/2.1.2_micro_switch_circuit.png
**Schritt 2**: Wechseln Sie in den Ordner des Codes.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python-pi5
**Schritt 3**: Führen Sie den Code aus.
.. raw:: html
.. code-block::
sudo python3 2.1.2_MicroSwitch_zero.py
Während der Code läuft, drücken Sie den Bewegungsarm, dann leuchtet die gelbe LED auf; lassen Sie den Bewegungsarm los, leuchtet die rote LED.
.. warning::
Wenn die Fehlermeldung ``RuntimeError: Cannot determine SOC peripheral base address`` angezeigt wird, lesen Sie bitte :ref:`faq_soc`
**Code**
.. note::
Sie können den unten stehenden Code **modifizieren/zurücksetzen/kopieren/ausführen/stoppen**. Aber zuvor müssen Sie zum Quellcodepfad wie ``raphael-kit/python-pi5`` gehen. Nachdem Sie den Code modifiziert haben, können Sie ihn direkt ausführen, um den Effekt zu sehen.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import LED, Button # Import LED and Button classes from gpiozero
from time import sleep # Import sleep function for delays
# Initialize micro switch on GPIO pin 17 with the pull-up resistor disabled
micro_switch = Button(17, pull_up=False)
# Initialize LED1 connected to GPIO pin 22
led1 = LED(22)
# Initialize LED2 connected to GPIO pin 27
led2 = LED(27)
try:
# Continuously check the state of the micro switch and control LEDs accordingly
while True:
if micro_switch.is_pressed: # If the micro switch is pressed
print('LED1 ON') # Print a message to the console
led1.on() # Turn on LED1
led2.off() # Turn off LED2
else: # If the micro switch is not pressed
print(' LED2 ON') # Print a message to the console
led1.off() # Turn off LED1
led2.on() # Turn on LED2
sleep(0.5) # Pause for 0.5 seconds before checking the switch again
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully
pass
**Code-Erklärung**
#. Diese Zeile legt fest, dass das Skript mit Python 3 ausgeführt wird. Sie importiert die Klassen ``LED`` und ``Button`` aus ``gpiozero`` zur Steuerung der GPIO-Geräte und ``sleep`` aus ``time`` für Verzögerungen.
.. code-block:: python
#!/usr/bin/env python3
from gpiozero import LED, Button # Import LED and Button classes from gpiozero
from time import sleep # Import sleep function for delays
#. Initialisiert einen Mikroschalter, der mit dem GPIO-Pin 17 verbunden ist, mit deaktiviertem Pull-Up-Widerstand und zwei LEDs, die mit den GPIO-Pins 22 und 27 verbunden sind.
.. code-block:: python
# Initialize micro switch on GPIO pin 17 with the pull-up resistor disabled
micro_switch = Button(17, pull_up=False)
# Initialize LED1 connected to GPIO pin 22
led1 = LED(22)
# Initialize LED2 connected to GPIO pin 27
led2 = LED(27)
#. In der Hauptschleife wird der Zustand des Mikroschalters überprüft. Wenn gedrückt, schaltet sich LED1 ein und LED2 aus. Wenn nicht gedrückt, schaltet sich LED1 aus und LED2 ein. Die Schleife wiederholt sich alle 0,5 Sekunden. Fängt eine Tastaturunterbrechung (wie Strg+C) ab, um das Skript anmutig zu beenden.
.. code-block:: python
try:
# Continuously check the state of the micro switch and control LEDs accordingly
while True:
if micro_switch.is_pressed: # If the micro switch is pressed
print('LED1 ON') # Print a message to the console
led1.on() # Turn on LED1
led2.off() # Turn off LED2
else: # If the micro switch is not pressed
print(' LED2 ON') # Print a message to the console
led1.off() # Turn off LED1
led2.on() # Turn on LED2
sleep(0.5) # Pause for 0.5 seconds before checking the switch again
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) to exit the loop gracefully
pass