Raspberry Pi - Taste

Diese Anleitung zeigt Ihnen, wie Sie Raspberry Pi mit einer Taste verwenden. Im Detail werden wir lernen:

Die Taste wird auch als Drucktaste, taktile Taste oder Momentschalter bezeichnet. Sie ist eine grundlegende Komponente und wird in vielen Raspberry Pi Projekten verwendet. Sie ist einfach zu verwenden. Allerdings kann sie für Anfänger aufgrund mechanischer, physischer Aspekte und ihrer Verwendung verwirrend sein. Diese Anleitung vereinfacht es für Anfänger.

Hardware Benötigt

1×Raspberry Pi 5
1×Breadboard-Taste mit Kappe
1×Breadboard-Tasten Kit
1×Panel-Drucktaste
1×Taster-Modul
1×Breadboard (Steckplatine)
1×Jumper Wires (Verbindungskabel)
1×(Empfohlen) Schraubklemmenblock-Shield für Raspberry Pi
1×(Empfohlen) Raspberry Pi Prototyping-Grundplatte & Breadboard-Kit
1×(Empfohlen) HDMI-Touchscreen-Monitor für Raspberry Pi

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Über die Taste

Bei der Verwendung einer Taste stoßen Anfänger häufig auf zwei häufige Schwierigkeiten:

1. Problem des schwebenden Eingangs:.

  • Symptom: Der vom Eingangspin gelesene Wert entspricht nicht dem Zustand des Tastendrucks.
  • Ursache: Ein Pull-up oder Pull-down Widerstand wird nicht am Eingangspin verwendet.
  • Lösung: Verwenden Sie einen Pull-up oder Pull-down Widerstand, der in dieser Anleitung behandelt wird.

2. Prellphänomen:.

  • Symptom: Der Raspberry Pi Code erkennt mehrere Tastendrücke, obwohl die Taste nur einmal gedrückt wurde.
  • Ursache: Mechanische und physische Probleme verursachen, dass der Zustand der Taste (oder des Schalters) schnell mehrfach zwischen LOW und HIGH wechselt.
  • Lösung: Um dieses Problem zu lösen, wird das Raspberry Pi - Button - Debounce Tutorial die Verwendung von Entprellungstechniken demonstrieren.

Für Anwendungen, die eine exakte Druckerkennung erfordern, ist dies eine Überlegung, die gemacht werden sollte.

※ Notiz:

Verwechseln Sie die Taste nicht mit den folgenden:

Die Tasten-Pinbelegung

Es gibt verschiedene Arten von Drucktasten, die grob in zwei Gruppen kategorisiert werden können:

  • PCB-montierte Drucktaste (geeignet für die Montage auf einem Breadboard)
  • Panel-montierte Drucktaste
Push button

Eine PCB-montierte Taste hat typischerweise vier Pins.

Button pinout

Dennoch sind diese Pins intern paarweise miteinander verbunden. Folglich müssen wir nur zwei der vier Pins verwenden, die intern nicht verbunden sind.

Es gibt vier Methoden, sich mit der Taste zu verbinden, von denen zwei symmetrisch sind (siehe Bild).

How To Use Button

? Warum verwenden wir nur zwei Pins einer Taste, wenn sie vier Pins hat?

⇒ Um sicherzustellen, dass sie sicher an ihrem Platz auf der PCB (gedruckte Schaltung) bleibt und jeglichem ausgeübten Druck standhalten kann.

Eine Panel-montierte Taste hat normalerweise zwei Pins.

two-pin push button Pinout
image source: diyables.io

Das Drucktasten-Modul enthält einen integrierten Pull-down Widerstand, der sicherstellt, dass der Ausgang LOW bleibt, wenn die Taste nicht gedrückt ist. Es hat drei Pins:

  • GND: Verbinden Sie diesen Pin mit Masse.
  • VCC: Verbinden Sie diesen Pin mit einer 3,3V Stromversorgung.
  • OUT: Verbinden Sie diesen Pin mit einem digitalen Eingang Ihres Raspberry Pi.

Mit dieser Konfiguration gibt das Modul LOW aus, wenn die Taste nicht gedrückt ist, und HIGH, wenn die Taste gedrückt ist.

Wie es funktioniert

  • Wenn die Taste nicht gedrückt ist, sind Pin A und Pin B nicht verbunden.
  • Wenn jedoch die Taste gedrückt wird, werden Pin A und Pin B verbunden.
How Button Works

Raspberry Pi - Taste

Ein Pin der Taste wird entweder mit VCC oder GND verbunden. Der andere Pin derselben Taste wird mit einem Raspberry Pi Pin verbunden. Durch Überprüfung des Status eines als Eingang konfigurierten Raspberry Pi Pins können wir bestimmen, ob eine Taste gedrückt wurde oder nicht.

Tastenzustand und Druckzustand

Die Verbindung zwischen der Taste und Raspberry Pi sowie die Konfiguration des Raspberry Pi Pins bestimmen die Beziehung zwischen dem Tastenzustand und dem Druckzustand.

Es gibt zwei Möglichkeiten, eine Taste mit Raspberry Pi zu verwenden:

  1. Verbinden Sie einen Pin der Taste mit VCC und den anderen mit einem Raspberry Pi Pin mit einem Pull-down Widerstand
    • Wenn die Taste gedrückt wird, ist der Zustand des Raspberry Pi Pins HIGH. Andernfalls ist er LOW
    • Ein interner oder externer Widerstand kann verwendet werden. Der interne Widerstand ist in den Raspberry Pi eingebaut und kann über Code eingestellt werden.
  • Verbinden Sie einen Pin der Taste mit GND und den anderen mit einem Raspberry Pi Pin mit einem Pull-up Widerstand
    • Wenn die Taste gedrückt wird, ist der Zustand des Raspberry Pi Pins LOW. Andernfalls ist er HIGH
    • Ein interner oder externer Widerstand kann verwendet werden. Der interne Widerstand ist in den Raspberry Pi eingebaut und kann über Code eingestellt werden.

    ※ Notiz:

    Wenn weder ein Pull-down noch ein Pull-up Widerstand verwendet wird, geht der Eingangspin in einen "schwebenden" Zustand über, wenn die Taste nicht gedrückt ist, was bedeutet, dass der Zustand entweder HIGH oder LOW (instabil) sein kann und zu einer falschen Erkennung führt.

    • Die schlechteste Praxis: initialisiert den Raspberry Pi Pin als Eingang (durch Verwendung von GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_OFF)) und verwendet KEINEN externen Pull-down/Pull-up Widerstand.
    • Die beste Praxis: initialisiert den Raspberry Pi Pin als internen Pull-up Eingang (durch Verwendung von GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)). Es ist NICHT erforderlich, einen externen Pull-down/Pull-up Widerstand zu verwenden.

    Für die Bequemlichkeit von Anfängern verwendet diese Anleitung den einfachsten Ansatz: Konfiguration des Raspberry Pi Pins als interner Pull-up Eingang ohne die Notwendigkeit eines externen Widerstands. Keine Sorge darüber, wie der Pull-up/Pull-down Widerstand anzuschließen ist. Alles was erforderlich ist, ist die Verwendung des Raspberry Pi Codes.

    Verdrahtungsdiagramm

    • Verdrahtungsdiagramm zwischen Raspberry Pi und PCB-montierter Taste
    Raspberry Pi Button Wiring Diagram

    Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

    • Verdrahtungsdiagramm zwischen Raspberry Pi und Panel-montierter Taste
    Raspberry Pi two-pin push button Wiring Diagram

    Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

    Um Ihren Verdrahtungsaufbau zu vereinfachen und zu organisieren, empfehlen wir die Verwendung eines Schraubklemmenblock-Shields für Raspberry Pi. Dieses Shield gewährleistet sicherere und besser verwaltbare Verbindungen, wie unten gezeigt:

    Raspberry Pi Schraubklemmenblock-Shield

    Wie man für eine Taste programmiert

    • Verwenden Sie die GPIO.setup() Funktion, um den Raspberry Pi Pin als internen Pull-up Eingang zu initialisieren. Zum Beispiel, Pin 16:
    GPIO.setup(16, GPIO.IN, pull_up_down=GPIO.PUD_UP)
    • Verwenden Sie die GPIO.input() Funktion, um den Zustand des Raspberry Pi Pins zu bestimmen.
    button_state = GPIO.input(16)

    ※ Notiz:

    Zwei häufige Anwendungsfälle sind verfügbar:

    • Der erste: Wenn der Eingangszustand HIGH ist, führen Sie eine Aktion aus. Wenn der Eingangszustand LOW ist, machen Sie das Gegenteil.
    • Der zweite: Wenn sich der Eingangszustand von LOW zu HIGH (oder HIGH zu LOW) ändert, führen Sie eine Aktion aus.

    Wir wählen eine davon je nach Anwendung. Zum Beispiel, bei der Verwendung einer Taste zur Steuerung einer LED:

    • Wenn wir möchten, dass die LED AN ist, wenn die Taste gedrückt wird, und AUS, wenn die Taste NICHT gedrückt wird, SOLLTEN wir den ersten Anwendungsfall verwenden.
    • Wenn wir möchten, dass die LED zwischen AN und AUS umgeschaltet wird, jedes Mal wenn wir die Taste drücken, SOLLTEN wir den zweiten Anwendungsfall verwenden.

    Raspberry Pi Code - Lesen des Tastenzustands

    Schnelle Schritte

    • Stellen Sie sicher, dass Sie Raspbian oder ein anderes Raspberry Pi kompatibles Betriebssystem auf Ihrem Pi installiert haben.
    • Stellen Sie sicher, dass Ihr Raspberry Pi mit demselben lokalen Netzwerk wie Ihr PC verbunden ist.
    • Stellen Sie sicher, dass Ihr Raspberry Pi mit dem Internet verbunden ist, falls Sie einige Bibliotheken installieren müssen.
    • Neu bei Raspberry Pi? Beginnen Sie mit unserem Raspberry Pi Getting Started Leitfaden, um zuerst die Grundlagen zu lernen.
    • Verbinden Sie Ihren PC mit dem Raspberry Pi über SSH mit dem integrierten SSH-Client unter Linux und macOS oder PuTTY unter Windows. Siehe wie Sie Ihren PC mit Raspberry Pi über SSH verbinden.
    • Stellen Sie sicher, dass Sie die RPi.GPIO Bibliothek installiert haben. Falls nicht, installieren Sie sie mit dem folgenden Befehl:
    sudo apt-get update sudo apt-get install python3-rpi.gpio
    • Erstellen Sie eine Python-Skript-Datei button.py und fügen Sie den folgenden Code hinzu:
    # Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. # Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: # https://newbiely.de/tutorials/raspberry-pi/raspberry-pi-button import RPi.GPIO as GPIO import time # Define the GPIO pin connected to the button BUTTON_PIN = 16 # Set the GPIO mode to BCM GPIO.setmode(GPIO.BCM) # Initialize the pushbutton pin as an input with a pull-up resistor # The pull-up input pin will be HIGH when the switch is open and LOW when the switch is closed. GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) try: while True: # Read the state of the switch/button button_state = GPIO.input(BUTTON_PIN) # Print out the button's state print(button_state) # Small delay to avoid unnecessary printing time.sleep(0.1) except KeyboardInterrupt: print("\nExiting...") # Clean up GPIO settings GPIO.cleanup()
    • Speichern Sie die Datei und führen Sie das Python-Skript aus, indem Sie den folgenden Befehl im Terminal eingeben:
    python3 button.py
    • Drücken Sie die Taste mehrmals und lassen Sie sie los.
    • Überprüfen Sie die Ausgabe im Serial Monitor.
    PuTTY - Raspberry Pi
    1 1 1 0 0 0 0 0 0 1 1 1

    1 ist HIGH, 0 ist LOW.

    Das Skript läuft in einer endlosen Schleife kontinuierlich, bis Sie Ctrl + C im Terminal drücken.

    Code-Erklärung

    Schauen Sie sich die zeilenweise Erklärung in den Kommentaren des Quellcodes an!

    Raspberry Pi Code - Erkennung von Tastendruckereignissen

    Schnelle Schritte

    • Erstellen Sie eine Python-Skript-Datei button_pressed.py und fügen Sie den folgenden Code hinzu:
    # Dieser Raspberry Pi Code wurde von newbiely.de entwickelt # Dieser Raspberry Pi Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. # Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: # https://newbiely.de/tutorials/raspberry-pi/raspberry-pi-button import RPi.GPIO as GPIO import time # Define the GPIO pin connected to the button BUTTON_PIN = 16 # Set the GPIO mode to BCM GPIO.setmode(GPIO.BCM) # Initialize the pushbutton pin as an input with a pull-up resistor # The pull-up input pin will be HIGH when the switch is open and LOW when the switch is closed. GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP) # Variable to keep track of the previous button state prev_button_state = GPIO.input(BUTTON_PIN) try: while True: # Read the state of the switch/button button_state = GPIO.input(BUTTON_PIN) # Check if the button state has changed (press or release event) if button_state != prev_button_state: if button_state == GPIO.LOW: # Button is pressed print("The button is pressed!") else: # Button is released print("The button is released!") # Update the previous button state prev_button_state = button_state # Small delay to avoid unnecessary reading time.sleep(0.1) except KeyboardInterrupt: print("\nExiting...") # Clean up GPIO settings GPIO.cleanup()
    • Speichern Sie die Datei und führen Sie das Python-Skript aus, indem Sie den folgenden Befehl im Terminal eingeben:
    python3 button_pressed.py
    • Drücken Sie die Taste und halten Sie sie einen Moment gedrückt.
    • Überprüfen Sie die Ausgabe im Serial Monitor.
    PuTTY - Raspberry Pi
    The button is pressed The button is released

    Das Skript läuft in einer endlosen Schleife kontinuierlich, bis Sie Ctrl + C im Terminal drücken.

    Code-Erklärung

    Schauen Sie sich die zeilenweise Erklärung in den Kommentaren des Quellcodes an!

    ※ Notiz:

    • Auch wenn Sie die Taste nur einmal drücken und loslassen, kann die Ausgabe im Terminal mehrere gedrückt und losgelassen Ereignisse anzeigen. Das ist das erwartete Verhalten der Taste. Dieses Phänomen wird als "Prellen" bezeichnet. Um mehr darüber zu erfahren, lesen Sie bitte das Raspberry Pi - Button Debounce Tutorial.
    • Wenn Sie das Tasten-Modul verwenden, konfigurieren Sie den Pin in den Eingangsmodus mit GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_OFF). Mit dieser Einstellung gibt das Modul LOW aus, wenn die Taste nicht gedrückt ist, und HIGH, wenn die Taste gedrückt ist.

    Video Tutorial

    Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

    Fordern Sie sich selbst heraus

    • Wenn die Taste gedrückt wird, soll die LED eingeschaltet werden.
    • Wenn die Taste nicht gedrückt wird, soll die LED ausgeschaltet werden.
    • Jedes Mal, wenn die Taste gedrückt wird, soll die LED zwischen AN und AUS umschalten.

    Zusätzliches Wissen

    Bei welchen Gelegenheiten sollte ein Pull-down/Pull-up Widerstand für einen Eingangspin verwendet werden und wann nicht?

    • Wenn der Sensor entweder geschlossene oder offene Zustände hat, ist ein Pull-up oder Pull-down Widerstand erforderlich, um diese Zustände zu LOW und HIGH zu machen. Beispiele für solche Sensoren sind Drucktaste, Schalter und Magnetkontaktschalter (Türsensor).
    • Andererseits, wenn der Sensor zwei definierte Spannungspegel (LOW und HIGH) hat, ist ein Pull-up oder Pull-down Widerstand NICHT notwendig. Beispiele für solche Sensoren sind Bewegungsmelder und Berührungssensor.

    ※ UNSERE NACHRICHTEN

    • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!