Zum Inhalt springen
Arduino viele Buttons auslesen Titel

Viele Buttons mit Arduino auslesen

Um viele Buttons mit Arduino auszulesen ist es nötig, dass man das Programm nirgends mit Delays aufhält. Um trotzdem zeitabhängige Funktionen zu verwenden, sollte man auf Timer zurückgreifen. Dazu habe ich hier schon mal etwas geschrieben: Timer mit Arduino. Ansonsten ist das Auslesen vieler Buttons mit Arduino recht unkompliziert. Es bietet sich an, den Zustand aller Buttons einmal pro Frame (also dem Aufruf der Loop-Funktion) in eine Variable zu schreiben und im weiteren Programmverlauf auf diese Zustandsvariable zuzugreifen.

Schaltplan

Mit Arduino viele Buttons auslesen

Hier sind drei Buttons mit den digitalen Pins 8 bis 10 verbunden. Zusätzlich sind drei LEDs mit der Kathoden-Seite (kurzes Beinchen) über einen 220 Ohm Widerstand mit dem GND verbunden. Das lange Beinchen (Anode) ist jeweils mit einem digitalen Kanal (2, 3, 4) verbunden.

Code: Viele Buttons mit Arduino auslesen

int ledPins[]={2,3,4};
int buttonPins[]={8,9,10};
int buttonStates[]={0,0,0};


void setup() {
  Serial.begin(9600);
  
  for (int i=0; i<sizeof(buttonPins); i++){
    pinMode(buttonPins[i],INPUT_PULLUP);  
  }
  Serial.println(sizeof(buttonPins));
  for (int i=0; i<sizeof(ledPins); i++){
    pinMode(ledPins[i],OUTPUT);  
  }
  
}

void loop() {
  for (int i=0; i<3; i++){
    if (digitalRead(buttonPins[i])==HIGH) buttonStates[i]=1;
    else buttonStates[i]=0;
  }

  for (int i=0; i<3; i++){
    if (buttonStates[i]==1) digitalWrite(ledPins[i],HIGH);
    else digitalWrite(ledPins[i],LOW);
  }

  delay(10);
}

Im Codebeispiel werden zunächst drei Arrays angelegt. Diese speichern jeweils die digitalen Pins des Arduinos für die LEDs und Buttons, sowie den Zustand der Buttons, der im Loop jeweils festgestellt und zugewiesen wird.


Sieh dir jetzt meinen neuen Arduino-Videokurs an: Jetzt ansehen!


Alle Buttons werden per INPUT_PULLUP deklariert. Somit benötigt man keine externen Pull-up-Widerstände.

Im Loop gibt es zwei for-Schleifen. Die erste liest die Buttons aus und speichert ihren Zustand im Array buttonState, die zweite for-Schleife gibt die Werte des State-Arrays als LED-Anzeige aus.


Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book »Arduino Projekte Volume 1« an!

  • Die beliebtesten Arduino-Projekte von StartHardware
  • Inklusive Schaltplan, Beschreibung und Code
  • Arduino-Schnellstart-Kapitel
  • Kompakter Programmierkurs


0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.

4 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
Klaus Eyssel
5 Jahre zuvor

Ich bin in Bascom und teilweise auch in Assembler tätig und einigermaßen drin.
Leider ist mir C fremd.
Wäre es nicht möglich parallel C und Bascom auf zu führen, dann fällt das Lernen viel leichter ?
freundliche Grüße
Klaus Eyssel

Eure Reihe hier ist toll. Habe lange nach so etwas gesucht und gleich beim ersten Mal einiges verstanden

Marcus Willmeroth
5 Jahre zuvor

Hallo, finde das Tutorial „Viele Buttons mit Arduino auslesen“ echt interessant – besonders desswegen, weil ich genau diese Funktion für mein Projekt (ca.20 Schalter + Touchscreen Buttons) benötige.
Leider bin ich vollkommener Anfänger – aber hoffentlich noch lernfähig ;)
Ich habe die Schaltung mit meinem Uno einmal nachgebaut und den Sketch von euch hochgeladen.
Grundsätzlich hätte ich damit gerechnet, dass die LEDs nach dem Einschalten Status LOW hätten und bei Tasterdruck einschalten. Bei mir leuchten allerdings die LEDs sofort und schalten sich nur aus, wenn man den Taster gedrückt hält. Nach loslassen leuchten sie sofort wieder.
Ich würde den Sketch gerne genau verstehen und so umstellen können, dass er so funktioniert wie ich mir es erhofft hatte.
Würde mich riesig freuen wenn ihr mir helfen könntet.
VG… Marcus

4
0
Ich würde mich über deine Meinung freuen.x