Arduino Nano - Taster

Dieses Tutorial erklärt dir, wie man den Arduino Nano mit einem Knopf verwendet. Im Detail werden wir lernen:

Der Knopf wird als Pushbutton, Taster oder Momentanschalter bezeichnet. Es ist eine grundlegende Komponente und wird in Arduino-Projekten häufig verwendet. Es ist einfach zu bedienen. Allerdings kann es für Anfänger aufgrund mechanischer und physikalischer Aspekte sowie der verschiedenen Verwendungsmöglichkeiten verwirrend sein. Dieses Tutorial erleichtert Anfängern den Einstieg.

Erforderliche Hardware

1×Official Arduino Nano
1×Alternativ: DIYables ATMEGA328P Nano Development Board
1×USB-A-zu-Mini-B-Kabel
1×Breadboard-Taster mit Kappe
1×Breadboard-Taster-Kit
1×Panel-Drucktaster
1×Taster-Modul
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano

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 Button

Anfänger stoßen typischerweise auf zwei häufige Schwierigkeiten bei der Verwendung eines Buttons:

1. Schwebendes Eingabeproblem:

  • Symptom: Der gelesene Wert des Eingangspins entspricht nicht dem gedrückten Zustand des Tasters.
  • Cause: Der Eingangspin verwendet weder einen Pull-Up- noch einen Pull-Down-Widerstand.
  • Solution: Verwenden Sie einen Pull-Up- oder Pull-Down-Widerstand, und die Schritte dazu werden in diesem Tutorial erläutert.

2. Ratternphänomen:.

  • Symptom: Obwohl der Knopf nur einmal gedrückt wird, erkennt der Arduino-Code mehrere Knopfdrucke.
  • Ursache: Die mechanischen und physischen Probleme verursachen, dass der Zustand des Knopfs (oder Schalters) schnell zwischen LOW- und HIGH-Pegel hin- und herwechselt.
  • Lösung: Um dieses Problem anzugehen, werden Entprellungstechniken im Tutorial Arduino Nano- Button - Entprellung behandelt.

Nur Anwendungen, die eine genaue Erkennung der Anzahl der Tastendrücke erfordern, sollten dies berücksichtigen.

※ Notiz:

Verwechseln Sie den Knopf nicht mit dem Folgenden:

Die Pinbelegung des Tasters

Der Druckknopf, auch bekannt als Pushbutton, Taster oder Momentanschalter, ist eine Art Schalter, der schließt, wenn der Knopf gedrückt und gehalten wird, und sich öffnet, wenn er losgelassen wird. Verschiedene Arten von Druckknöpfen existieren, die grob in zwei Gruppen eingeteilt werden können:

  • PCB-mount push button (suitable for mounting on a breadboard)
  • Panel-mount push button
Druckknopf

Ein auf der Leiterplatte montierter Taster hat typischerweise vier Pins.

Pinbelegung des Buttons

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

Es gibt vier mögliche Arten, sich mit dem Knopf zu verbinden, von denen zwei symmetrisch sind (wie im Bild zu sehen).

So verwenden Sie den Button

Warum werden nur zwei Pins eines Tasters verwendet, obwohl er vier hat?

⇒ Um sicherzustellen, dass es sicher auf der Leiterplatte (Printed Circuit Board) montiert ist und jedem Druck standhalten kann.

Ein Panelmontage-Taster hat normalerweise zwei Pins.

Pinbelegung eines zweipoligen Tasters
image source: diyables.io

Das Push-Button-Modul enthält einen eingebauten Pull-Down-Widerstand, der sicherstellt, dass der Ausgang LOW bleibt, wenn der Knopf nicht gedrückt wird. Es hat drei Pins:

  • GND: Verbinde diesen Pin mit der Masse.
  • VCC: Verbinde diesen Pin mit einer 5V- oder 3,3V-Stromversorgung.
  • OUT: Verbinde diesen Pin mit einem digitalen Eingang an deinem Arduino.

Mit dieser Konfiguration liefert das Modul LOW, wenn der Knopf nicht gedrückt ist, und HIGH, wenn der Knopf gedrückt wird.

Wie es funktioniert

  • Wenn der Knopf nicht gedrückt wird, sind Pin A und Pin B nicht miteinander verbunden.
  • Allerdings sind Pin A und Pin B miteinander verbunden, wenn der Knopf gedrückt wird.
Wie ein Button funktioniert

Arduino Nano - Knopf

Der Pin eines Knopfs ist entweder mit VCC oder GND verbunden. Der andere Pin desselben Knopfs ist mit einem Pin auf einem Arduino Nano-Board verbunden. Durch Prüfung des Zustands eines als Eingang konfigurierten Pins des Arduino Nano können wir feststellen, ob der Knopf gedrückt wurde oder nicht.

Schaltzustand und Drückzustand

Die Verbindung zwischen dem Taster und dem Arduino Nano sowie die Konfiguration des Arduino-Pins bestimmen die Beziehung zwischen dem Zustand des Tasters und dem Drückzustand.

Es gibt zwei Möglichkeiten, einen Taster mit dem Arduino zu verwenden:

  1. Der Pin eines Knopfs ist mit VCC verbunden, der andere ist mit einem Arduino-Pin verbunden, der einen Pull-Down-Widerstand hat
    • Wenn der Knopf gedrückt wird, wird der Zustand des Arduino-Pins HIGH sein. Falls nicht, wird der Zustand des Arduino-Pins LOW sein
    • In diesem Fall wird ein externer Widerstand benötigt.
  • Der Pin eines Knopfs ist mit GND verbunden, der andere ist mit einem Arduino-Pin verbunden, der einen Pull-Up-Widerstand hat
    • Wenn der Knopf gedrückt wird, ist der Zustand des Arduino-Pins LOW. Falls nicht, ist der Zustand des Arduino-Pins HIGH
    • Wir können entweder einen internen oder externen Widerstand verwenden. Der interne Widerstand ist bereits im Arduino Nano integriert und kann im Code des Arduino Nano festgelegt werden.

    ※ Notiz:

    • Wenn wir KEINE externen Pull-Down-/Pull-Up-Widerstände verwenden, ist der Zustand des Eingangspins, wenn der Taster NICHT gedrückt ist, „schwebend“. Das bedeutet, der Zustand kann HIGH oder LOW (instabil, nicht festgelegt) sein, was zu einer falschen Erkennung führt.
    • Die schlechteste Praxis: Initialisiert den Arduino-Pin als Eingang (pinMode(BUTTON_PIN, INPUT)) ohne externe Pull-Down- oder Pull-Up-Widerstände zu verwenden.
    • Die beste Praxis: Initialisiert den Arduino-Pin als internen Pull-Up-Eingang (durch Verwendung von pinMode(BUTTON_PIN, INPUT_PULLUP)). Es ist NICHT nötig, externe Pull-Down- oder Pull-Up-Widerstände zu verwenden.

    Aus Gründen der Einfachheit für Anfänger verwendet dieses Tutorial den einfachsten Ansatz: Den Pin des Arduino Nano als internen Pull-Up-Eingang zu initialisieren, ohne einen externen Widerstand zu benötigen. Es besteht für Anfänger keine Notwendigkeit, sich darüber Gedanken zu machen, wie der Pull-Up-/Pull-Down-Widerstand angeschlossen wird. Alles, was sie tun müssen, ist den Code für den Arduino Nano zu verwenden.

    Verdrahtungsdiagramm

    • Verdrahtungsdiagramm zwischen Arduino Nano und PCB-montiertem Taster
    Arduino Nano Taster-Schaltplan

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

    • Verdrahtungsdiagramm zwischen Arduino Nano und panelmontiertem Taster
    Arduino Nano zweipoliger Drucktaster-Schaltplan

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

    Siehe Der beste Weg, den Arduino Nano und andere Komponenten mit Strom zu versorgen.

    Wie man den Button programmiert

    • Verwenden Sie die pinMode()-Funktion, um den Arduino Nano-Pin als internen Pull-Up-Eingang festzulegen.
    • Zum Beispiel Pin 2:
    pinMode(2, INPUT_PULLUP);
    • Verwendet die Funktion digitalRead(), um den Zustand des Arduino Nano-Pins festzustellen.
    int button_state = digitalRead(BUTTON_PIN);

    ※ Notiz:

    Zwei gängige Anwendungsfälle gibt es:

    • Der erste: Wenn der Eingangsstatus HIGH ist, führe eine Aktion aus. Wenn der Eingangsstatus LOW ist, führe die gegenteilige Aktion aus.
    • Der zweite: Wenn sich der Eingangsstatus von LOW auf HIGH (oder HIGH auf LOW) ändert, tue etwas.

    Wir wählen je nach Anwendung einen dieser beiden aus. Zum Beispiel, wenn man einen Knopf verwendet, um eine LED zu steuern:

    • Wenn wir möchten, dass die LED AN ist, wenn der Knopf gedrückt ist, und AUS, wenn der Knopf NICHT gedrückt ist, SOLLTEN wir den ersten Anwendungsfall verwenden.
    • Wenn wir möchten, dass die LED bei jedem Drücken des Knopfs zwischen EIN und AUS umgeschaltet wird, SOLLTEN wir den zweiten Anwendungsfall verwenden.

    Wie man die Zustandsänderung von LOW zu HIGH erkennt

    const int BUTTON_PIN = 2; // Die Nummer des Pushbutton-Pins int prev_button_state = HIGH; // Der vorherige Zustand des Eingangs-Pins int button_state; // Der aktuelle Wert des Eingangs-Pins void setup() { // Initialisiere die serielle Kommunikation, um mit dem Serial Monitor zu kommunizieren. Serial.begin(9600); // Initialisiere den Pushbutton-Pin als Pull-Up-Eingang // Der Pull-Up-Eingangspin ist HIGH, wenn der Schalter offen ist, und LOW, wenn der Schalter geschlossen ist. pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // Lies den Zustand des Schalters/Buttons: button_state = digitalRead(BUTTON_PIN); if(prev_button_state == LOW && button_state == HIGH) Serial.println("The state changed from LOW to HIGH"); // Speichere den letzten Zustand prev_button_state = button_state; }

    Arduino Nano Quellcode

    Schnelle Schritte

    • Schließe deinen Arduino Nano über ein USB-Kabel an einen Computer an.
    • Starte die Arduino IDE, wähle das richtige Board und den richtigen Port aus.
    • Kopiere den untenstehenden Code und öffne ihn in der Arduino IDE.
    /* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano/arduino-nano-button */ #define BUTTON_PIN 2 // The number of the pushbutton pin void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // Configure the Arduino Nano pin as a pull-up input // The pull-up input pin is HIGH when the button is open and LOW when pressed. pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: int button_state = digitalRead(BUTTON_PIN); // print out the button's state Serial.println(button_state); }
    • Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code zu kompilieren und auf den Arduino Nano hochzuladen.
    Wie man Code auf den Arduino Nano hochlädt
    • Öffne den seriellen Monitor.
    • Drücke den Knopf mehrmals und lasse ihn los.
    • Sieh dir die im seriellen Monitor angezeigten Ergebnisse an.
    COM6
    Send
    1 1 1 0 0 0 0 0 0 1 1 1
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    1 ist hoch, 0 ist niedrig.

    Code-Erklärung

    Schau dir die Zeilen-für-Zeile-Erklärung an, die in den Kommentaren des Quellcodes enthalten ist!

    Bearbeitung des Arduino Nano-Codes

    Passen wir den Code so an, dass er Drück- und Loslassen-Ereignisse erkennen kann.

    Schnelle Schritte

    • Ändern Sie den Code wie folgt:
    /* * Dieser Arduino Nano Code wurde von newbiely.de entwickelt * Dieser Arduino Nano 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/arduino-nano/arduino-nano-button */ #define BUTTON_PIN 2 // The number of the pushbutton pin int prev_button_state = LOW; // The previous state from the input pin int button_state; // The current reading from the input pin void setup() { // Initialize the Serial to communicate with the Serial Monitor. Serial.begin(9600); // Configure the Arduino Nano pin as a pull-up input // The pull-up input pin is HIGH when the button is open and LOW when pressed. pinMode(BUTTON_PIN, INPUT_PULLUP); } void loop() { // read the state of the switch/button: button_state = digitalRead(BUTTON_PIN); if(prev_button_state == HIGH && button_state == LOW) Serial.println("The button is pressed"); else if(prev_button_state == LOW && button_state == HIGH) Serial.println("The button is released"); // save the the last state prev_button_state = button_state; }
    • Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code zu kompilieren und auf das Arduino Nano-Board hochzuladen.
    Code in der Arduino-IDE hochladen
    • Öffnen Sie den Serial Monitor.
    • Drücken Sie den Knopf und halten Sie ihn gedrückt.
    • Lassen Sie den Knopf los und beobachten Sie das Ergebnis im Serial Monitor.
    COM6
    Send
    The button is pressed The button is released
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    ※ Notiz:

    • Auch wenn Sie die Taste nur einmal drücken und loslassen, kann die Ausgabe im seriellen Monitor mehrere gedrückte und losgelassene Ereignisse anzeigen. Dies ist das typische Verhalten des Schalters und wird als das "Entprellungsphänomen" bezeichnet. Um dieses Problem zu lösen, lesen Sie bitte das Tutorial Arduino Nano - Button Debounce.
    • Wir haben eine Bibliothek entwickelt, ezButton, um den Einstieg zu erleichtern, insbesondere wenn man mit mehreren Tasten arbeitet. Weitere Informationen zur ezButton-Bibliothek hier.
    • Für das Button-Modul, setzen Sie den Pin mit pinMode(BUTTON_PIN, INPUT). Das Modul liefert LOW, wenn es nicht gedrückt ist, und HIGH, wenn es gedrückt wird.

    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.

    Fordere dich heraus

    • Wenn der Knopf gedrückt wird, wird die LED eingeschaltet.
    • Wenn der Knopf nicht gedrückt wird, wird die LED ausgeschaltet.
    • Jedes Mal, wenn der Knopf gedrückt wird, wechselt die LED zwischen EIN und AUS.

    Zusätzliches Wissen

    In welchen Fällen ist es angemessen, einen Pull-Down- bzw. Pull-Up-Widerstand für einen Eingangspin zu verwenden? In welchen Fällen ist es nicht geeignet, einen Pull-Down- bzw. Pull-Up-Widerstand für einen Eingangspin zu verwenden?

    • Wenn der Sensor entweder geschlossene oder offene Zustände hat, ist ein Pull-up- oder Pull-down-Widerstand erforderlich, um sie auf LOW bzw. HIGH zu bringen. Beispiele für solche Sensoren sind Taster, Schalter und Magnetschalter (Türsensor).
    • Auf der anderen Seite gilt: Wenn der Sensor zwei definierte Spannungspegel (LOW und HIGH) hat, ist kein Pull-up- oder Pull-down-Widerstand erforderlich. Beispiele für solche Sensoren sind Bewegungsmelder und Berührungssensoren.

    Funktionsreferenzen

    ※ 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!