Arduino Nano - Mehrere Tasten

Dieses Tutorial zeigt Ihnen, wie man einen Arduino Nano so programmiert, dass er mehrere Tasten gleichzeitig verarbeiten kann, ohne sich auf die Funktion delay() zu verlassen. Das Tutorial bietet den Code in zwei verschiedenen Varianten an:

Wir verwenden vier Schaltflächen als Beispiele. Sie können es leicht so anpassen, dass es zwei Schaltflächen, drei Schaltflächen, fünf Schaltflächen oder sogar noch mehr unterstützt.

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-mount Button
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

Wenn Ihnen der Taster (Pinbelegung, Funktionsweise, Programmierung ...) nicht vertraut ist, können Ihnen die folgenden Tutorials weitere Informationen liefern:

Verdrahtungsdiagramm

Arduino Nano Schaltplan für mehrere Taster

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.

Arduino Nano Code - Mehrere Tasten mit Entprellung

Wenn mehrere Knöpfe verwendet werden, kann es in bestimmten Situationen kompliziert werden:

Glücklicherweise vereinfacht die ezButton-Bibliothek diesen Prozess, indem sie Entprellung und Taster-Ereignisse intern verwaltet. Dies befreit Nutzer von der Aufgabe, Zeitstempel und Variablen zu verwalten, wenn die Bibliothek verwendet wird. Zusätzlich kann der Einsatz eines Arrays von Tastern die Lesbarkeit und Kürze des Codes verbessern.

/* * 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-multiple-button */ #include <ezButton.h> #define BUTTON_PIN_1 4 // The Arduino Nano pin connected to the button 1 #define BUTTON_PIN_2 5 // The Arduino Nano pin connected to the button 2 #define BUTTON_PIN_3 6 // The Arduino Nano pin connected to the button 3 #define BUTTON_PIN_4 7 // The Arduino Nano pin connected to the button 4 ezButton button1(BUTTON_PIN_1); // create ezButton object for button 1 ezButton button2(BUTTON_PIN_2); // create ezButton object for button 2 ezButton button3(BUTTON_PIN_3); // create ezButton object for button 3 ezButton button4(BUTTON_PIN_4); // create ezButton object for button 4 void setup() { Serial.begin(9600); button1.setDebounceTime(100); // set debounce time to 100 milliseconds button2.setDebounceTime(100); // set debounce time to 100 milliseconds button3.setDebounceTime(100); // set debounce time to 100 milliseconds button4.setDebounceTime(100); // set debounce time to 100 milliseconds } void loop() { button1.loop(); // MUST call the loop() function first button2.loop(); // MUST call the loop() function first button3.loop(); // MUST call the loop() function first button4.loop(); // MUST call the loop() function first // get button state after debounce int button1_state = button1.getState(); // the state after debounce int button2_state = button2.getState(); // the state after debounce int button3_state = button3.getState(); // the state after debounce int button4_state = button4.getState(); // the state after debounce /* Serial.print("The button 1 state: "); Serial.println(button1_state); Serial.print("The button 2 state: "); Serial.println(button2_state); Serial.print("The button 3 state: "); Serial.println(button3_state); Serial.print("The button 4 state: "); Serial.println(button4_state); */ if (button1.isPressed()) Serial.println("The button 1 is pressed"); if (button1.isReleased()) Serial.println("The button 1 is released"); if (button2.isPressed()) Serial.println("The button 2 is pressed"); if (button2.isReleased()) Serial.println("The button 2 is released"); if (button3.isPressed()) Serial.println("The button 3 is pressed"); if (button3.isReleased()) Serial.println("The button 3 is released"); if (button4.isPressed()) Serial.println("The button 4 is pressed"); if (button4.isReleased()) Serial.println("The button 4 is released"); }

Schnelle Schritte

  • Schließen Sie die Verkabelung gemäß dem obigen Bild an.
  • Schließen Sie das Arduino Nano-Board über ein USB-Kabel an Ihren PC an.
  • Öffnen Sie die Arduino-IDE auf Ihrem PC.
  • Wählen Sie das richtige Arduino Nano-Board (z. B. Arduino Nano Uno) und den COM-Port aus.
  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino-IDE.
  • Suchen Sie „ezButton“, und finden Sie anschließend die Button-Bibliothek von ArduinoGetStarted.
  • Klicken Sie auf die Installieren-Schaltfläche, um die ezButton-Bibliothek zu installieren.
Arduino Nano Tasterbibliothek
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino-IDE ein.
  • Kompilieren und laden Sie den Code auf das Arduino Nano-Board, indem Sie in der Arduino-IDE auf die Schaltfläche Upload klicken.
Wie man Arduino Nano-Code in der Arduino IDE hochlädt.
  • Öffne den seriellen Monitor in der Arduino-IDE
  • Drücke und lasse die Taste nacheinander los
COM6
Send
The button 1 is pressed The button 1 is released The button 2 is pressed The button 2 is released The button 3 is pressed The button 3 is released The button 4 is pressed The button 4 is released
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Arduino Nano Code - Mehrere Tasten mit Array

Wir können den obigen Code verbessern, indem wir ein Array von Schaltflächen verwenden. Der folgende Code nutzt dieses Array, um mit Schaltflächenobjekten zu arbeiten.

/* * 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-multiple-button */ #include <ezButton.h> #define BUTTON_NUM 4 // the number of buttons #define BUTTON_PIN_1 4 // The Arduino Nano pin connected to the button 1 #define BUTTON_PIN_2 5 // The Arduino Nano pin connected to the button 2 #define BUTTON_PIN_3 6 // The Arduino Nano pin connected to the button 3 #define BUTTON_PIN_4 7 // The Arduino Nano pin connected to the button 4 ezButton buttonArray[] = { ezButton(BUTTON_PIN_1), ezButton(BUTTON_PIN_2), ezButton(BUTTON_PIN_3), ezButton(BUTTON_PIN_4) }; void setup() { Serial.begin(9600); for (byte i = 0; i < BUTTON_NUM; i++) { buttonArray[i].setDebounceTime(100); // set debounce time to 100 milliseconds } } void loop() { for (byte i = 0; i < BUTTON_NUM; i++) buttonArray[i].loop(); // MUST call the loop() function first for (byte i = 0; i < BUTTON_NUM; i++) { // get button state after debounce int button_state = buttonArray[i].getState(); // the state after debounce /* Serial.print("The button "); Serial.print(i + 1); Serial.print(": "); Serial.println(button_state); */ if (buttonArray[i].isPressed()) { Serial.print("The button "); Serial.print(i + 1); Serial.println(" is pressed"); } if (buttonArray[i].isReleased()) { Serial.print("The button "); Serial.print(i + 1); Serial.println(" is released"); } } }

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!