Arduino UNO R4 - Taster

Der Knopf ist eine einfache, aber wichtige Komponente, die in vielen Arduino UNO R4-Projekten verwendet wird. Es mag aufgrund seiner mechanischen und physischen Eigenschaften kompliziert erscheinen, die für Anfänger eine Herausforderung darstellen können. Dieses Tutorial soll Anfängern helfen, es leicht zu verstehen. Lass uns beginnen!

Arduino UNO R4-Taster

※ Notiz:

Bevor wir lernen, wie man den Knopf mit dem Arduino UNO R4 verwendet, möchten wir zwei häufige Fehler hervorheben, die Anfängern oft begegnen:

  1. Das Floating-Input-Problem:
    • Symptom: Wenn ein Knopf an einen Eingangspin des Arduino UNO R4 angeschlossen ist, ist der Zustand des Eingangs-Pins unvorhersehbar und spiegelt sich nicht im Knopfzustand wider.
    • Ursache: Der Eingangspin ist nicht mit einem Pull-Down- oder Pull-Up-Widerstand verbunden.
    • Lösung: Verbinden Sie einen Pull-Down- oder Pull-Up-Widerstand mit dem Eingangs-Pin. Weitere Details werden später in diesem Tutorial bereitgestellt.
  • Das Rattern-Phänomen:
    • Symptom: Der Code des Arduino UNO R4 liest den Zustand des Knopfs und versucht, Druckereignisse zu erkennen, indem er Änderungen im Zustand feststellt (von HIGH nach LOW, oder LOW nach HIGH). Wenn der Knopf jedoch nur einmal gedrückt wird, kann der Arduino UNO R4 mehrere Betätigungen erkennen.
    • Ursache: Mechanische Eigenschaften verursachen dazu, dass der Zustand des Eingangs-Pins sich bei nur einem Druck schnell zwischen LOW und HIGH mehrfach umschaltet.
    • Lösung: Entprellung implementieren. Weitere Details finden Sie im Tutorial Arduino UNO R4 - Button - Debounce.

    Rattern betrifft nur Anwendungen, die eine präzise Anzahl von Tastendrücken erfordern. In anderen Anwendungen kann es jedoch kein Problem darstellen.

    Über Button

    Der Druckknopf, auch bekannt als Taster oder Momentanschalter, ist ein Schalter, der geschlossen wird, wenn Sie ihn drücken und festhalten, und geöffnet wird, wenn Sie ihn loslassen. Druckknöpfe gibt es in verschiedenen Typen, die hauptsächlich in zwei Gruppen unterteilt werden:

    • Push buttons for PCB mounting (can be used on a breadboard)
    • Push buttons for mounting on a panel
    Arduino UNO R4 Taster

    Pinbelegung

    Die auf der Leiterplatte montierten Taster haben in der Regel vier Stifte.

    Taster-Pin-Belegung

    Diese Pins sind innen paarweise miteinander verbunden, daher müssen wir nur zwei von den vier Pins verwenden, die innen nicht miteinander verbunden sind.

    Es gibt vier Möglichkeiten, den Knopf zu verbinden, wobei es tatsächlich zwei gibt, da sie ähnlich sind (siehe Bild).

    So verwenden Sie die Schaltfläche

    Ein Knopf hat vier Pins, aber warum verwenden wir nur zwei? ⇒ Dies dient dazu, ihn auf der Leiterplatte stabil zu halten und dem Druck standzuhalten.

    Die Panel-Montageknöpfe haben in der Regel zwei Pins.

    Pinbelegung eines zweipoligen Druckknopfs
    image source: diyables.io

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

    • GND: Schließen Sie diesen Pin an die Masse an.
    • VCC: Schließen Sie diesen Pin an eine 5V- oder 3,3V-Stromversorgung an.
    • OUT: Schließen Sie diesen Pin an einen digitalen Eingang Ihres Arduino-Boards an.

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

    Wie es funktioniert

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

    Arduino UNO R4 - Taster

    Ein Pin des Tasters ist mit VCC oder GND verbunden, und der andere Pin ist mit einem Pin am Arduino UNO R4 verbunden.

    Wir können feststellen, ob der Knopf gedrückt ist oder nicht, indem wir den Zustand eines Pins am Arduino UNO R4 prüfen, der als Eingangspin festgelegt ist.

    Buttonzustand und Drückzustand

    Der Zusammenhang zwischen dem Zustand des Knopfs und dem Betätigungszustand hängt davon ab, wie wir den Knopf an den Arduino UNO R4 anschließen und welche Einstellungen am Pin des Arduino UNO R4 vorgenommen werden.

    Es gibt zwei Möglichkeiten, einen Knopf mit dem Arduino UNO R4 zu verwenden:

    1. Verbinde einen der Tasterpins mit VCC und den anderen mit einem Arduino UNO R4-Pin mit einem Pull-Down-Widerstand.
      • Wenn der Taster gedrückt wird, ist der Pin-Zustand des Arduino UNO R4 HIGH. Andernfalls ist der Pin-Zustand LOW.
      • Sie MÜSSEN einen externen Widerstand verwenden.
  • Verbinde einen der Tasterpins mit GND und den anderen mit einem Arduino UNO R4-Pin mit einem Pull-Up-Widerstand.
    • Wenn der Taster gedrückt wird, ist der Pin-Zustand des Arduino UNO R4 LOW. Andernfalls ist der Pin-Zustand HIGH.
    • Sie können entweder einen internen oder externen Widerstand verwenden. Der interne Widerstand ist im Arduino UNO R4 integriert und kann über Arduino-Code aktiviert werden.

    ※ Notiz:

    Wenn kein Pull-down- oder Pull-up-Widerstand verwendet wird, ist der Eingangspin schwebend, wenn der Knopf nicht gedrückt ist. Das bedeutet, dass der Zustand des Pins sich unvorhersehbar zu HIGH oder LOW ändern kann, was zu falschen Messwerten führt.

    • Die schlechteste Praxis: Richten Sie den Arduino UNO R4-Pin als Eingang mit pinMode(BUTTON_PIN, INPUT) ohne Pull-down- oder Pull-up-Widerstand ein.
    • Die beste Praxis: Richten Sie den Arduino UNO R4-Pin mit einem internen Pull-up-Widerstand ein, indem Sie pinMode(BUTTON_PIN, INPUT_PULLUP) verwenden. Dadurch ist kein externer Widerstand erforderlich.

    Um es Anfängern leichter zu machen, verwendet dieses Tutorial die einfachste Methode: den Pin des Arduino UNO R4 als internen Pull-Up-Eingang zu konfigurieren, ohne einen externen Widerstand zu benötigen. Anfänger müssen sich nicht darum kümmern, den Pull-Up- oder Pull-Down-Widerstand anzuschließen. Sie müssen lediglich den bereitgestellten Arduino-Code verwenden.

    Verdrahtungsdiagramm

    • Verdrahtungsdiagramm für Arduino UNO R4 und PCB-montierter Taster
    Arduino UNO R4 Taster-Verdrahtungsdiagramm

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

    • Schaltplan für Arduino UNO R4 und panelmontierten Taster
    Arduino UNO R4 Zweipoliger Drucktaster Verdrahtungsdiagramm

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

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

    Wie man einen Button programmiert

    • Richtet Pin 7 des Arduino UNO R4 als internen Pull-Up-Eingang ein und verwendet dabei die Funktion pinMode().
    pinMode(7, INPUT_PULLUP);
    • Verwendet die Funktion digitalRead(), um den Zustand des Arduino UNO R4-Pins zu überprüfen.
    int button_state = digitalRead(BUTTON_PIN);

    ※ Notiz:

    Es gibt zwei gängige Anwendungsfälle:

    • Der erste Fall: Wenn das Eingangssignal HIGH ist, führe eine Aktion aus. Wenn das Eingangssignal LOW ist, führe die gegenteilige Aktion aus.
    • Der zweite Fall: Wenn das Eingangssignal von LOW nach HIGH (oder HIGH nach LOW) wechselt, führe eine Aktion aus.

    Je nach Zweck wählen wir eine dieser Optionen. Beispielsweise, wenn ein Knopf verwendet wird, um eine LED zu steuern:

    • Wenn wir möchten, dass die LED eingeschaltet wird, wenn der Knopf gedrückt wird, und ausgeschaltet wird, wenn er nicht gedrückt ist, sollten wir das erste Szenario wählen.
    • Wenn wir möchten, dass die LED bei jedem Druck des Knopfes zwischen EIN und AUS wechselt, sollten wir das zweite Szenario wählen.

    Arduino UNO R4 Code - Den Zustand des Knopfes auslesen

    #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the pushbutton pin as a pull-up input 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); delay(500); }

    Schnelle Schritte

    Folgen Sie diesen Anweisungen Schritt für Schritt:

    • Falls Sie zum ersten Mal den Arduino UNO R4 WiFi/Minima verwenden, lesen Sie das Tutorial zur Einrichtung der Umgebung für Arduino UNO R4 WiFi/Minima in der Arduino IDE (Einrichtung der Umgebung für Arduino UNO R4 WiFi/Minima in der Arduino IDE).
    • Schließen Sie den Taster gemäß dem bereitgestellten Diagramm an den Arduino UNO R4 an.
    • Verbinden Sie das Arduino UNO R4-Board mit Ihrem Computer über ein USB-Kabel.
    • Starten Sie die Arduino IDE auf Ihrem Computer.
    • Wählen Sie das passende Arduino UNO R4-Board (z. B. Arduino Uno R4 WiFi) und den COM-Port.
    • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
    • Klicken Sie in der Arduino IDE auf die Upload-Schaltfläche, um den Code an Ihren Arduino UNO R4 zu senden.
    Arduino IDE – Code hochladen
    • Öffne den seriellen Monitor.
    • Drücke den Knopf mehrmals und lasse ihn los.
    • Prüfe das Ergebnis im seriellen Monitor.
    COM6
    Send
    1 1 1 0 0 0 0 0 0 1 1 1
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    1 bedeutet AN, 0 bedeutet AUS.

    Code-Erklärung

    Die Erklärung befindet sich im Kommentarbereich des oben gezeigten Arduino-Codes.

    Arduino UNO R4 Code - Erkennung des Knopfdruck- und Loslassen-Ereignisses

    Lass uns den Code so ändern, dass er erkennt, wann Schaltflächen gedrückt und losgelassen werden.

    /* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 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-uno-r4/arduino-uno-r4-button */ #define BUTTON_PIN 7 // The Arduino UNO R4 pin connected to the button int button_state; // the current state of button int prev_button_state = LOW; // the previous state of button void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600); // initialize the pushbutton pin as a pull-up input 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 last state prev_button_state = button_state; }

    Schnelle Schritte

    • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
    • Klicken Sie auf die Hochladen-Schaltfläche in der Arduino IDE, um den Code auf Arduino UNO R4 zu übertragen.
    • Öffnen Sie den seriellen Monitor.
    • Drücken Sie den Knopf und lassen Sie ihn los.
    • Schauen Sie sich das Ergebnis im seriellen Monitor an.
    COM6
    Send
    The button is pressed The button is released
    Autoscroll Show timestamp
    Clear output
    9600 baud  
    Newline  

    ※ Notiz:

    • Selbst wenn Sie den Knopf nur einmal drücken und loslassen, könnte der serielle Monitor mehrere Druck- und Loslass-Ereignisse anzeigen. Dieses übliche Verhalten wird als „Prellen“ bezeichnet. Weitere Details finden Sie im Arduino UNO R4 - Button Debounce Tutorial.
    • Um den Prozess für Anfänger zu vereinfachen, die mehrere Taster verwenden, haben wir eine Bibliothek namens ezButton entwickelt. Hier erfahren Sie mehr über die ezButton-Bibliothek.
    • Wenn Sie das Button-Modul verwenden, setzen Sie den Pin in den Eingangsmodus mit pinMode(BUTTON_PIN, INPUT). In dieser Konfiguration gibt das Modul LOW aus, wenn der Knopf nicht gedrückt ist, und HIGH, wenn der Knopf 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.

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