Zum Inhalt springen
Arduino Digital In Taster

Digital In

Um ein digitales Signal zu erfassen (Schalter, Taster, usw.), erweitert man die Schaltung um einen Taster. Die eine Seite des Tasters wird mit dem GND des Arduino-Board verbunden, die andere Seite mit dem digitalen Pin 2.

Im Code schalten wir am Pin 2 den so genannten Pull-Up Widerstand hinzu. Er wird benötigt, um Spannungsschwankungen und Störsignale herauszufiltern. Alle störenden Ströme werden somit über diesen internen Widerstand in den 5V+ geführt. Ist der Taster nicht gedrückt, liegt am Pin 2 jetzt ein 5V+-Signal an (HIGH), drückt man den Taster, so liegt ein GND Signal an (LOW).

Code für den Digital In vom Arduino

const int buttonPin = 2;
const int ledPin =  13;
int buttonState = 0;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop(){
  buttonState = digitalRead(buttonPin);
  if (buttonState == LOW) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

Am Anfang werden drei ganzzahlige Variablen buttonPin, ledPin und buttonState erzeugt. Dabei sind die ersten beiden unveränderlich (Schlüsselwort const für Konstante). Die Variable buttonState wird verwendet, um den aktuellen Zustand des Tasters zu speichern.


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


const int buttonPin = 2;
const int ledPin =  13;
int buttonState = 0;

Im Setup bekommt der ledPin die Funktion eines Outputs, der buttonPin die eines Inputs mit zugeschaltetem Pull-Up-Widerstand.

pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);

Im Loop wird der Variable buttonState mit dem Befehl = digitalRead(buttonPin) der aktuelle Zustand des Buttons übergeben (entweder HIGH oder LOW).

buttonState = digitalRead(buttonPin);

Durch eine if-Abfrage (Alle Anweisungen innerhalb der if-Abfrage werden nur ausgeführt, wenn die in Klammern angegebene Bedingung zutrifft.) wird die LED am ledPin eingeschaltet, also wenn buttonState LOW ist, sonst (else) wird sie abgeschaltet.

if (buttonState == LOW) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}