Zum Inhalt springen
Arduino Digital In Taster

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);
  }
}

0 0 votes
Article Rating
34 Comments
Newest
Oldest Most Voted
Inline Feedbacks
Alle Kommentare anzeigen
Daniel
8 Jahre zuvor

Hallo, hat jemand schon ein Programm geschrieben welches innerhalb einer gewissen Zeit einen doppelklick eines Tasters erkennt?

Yannick
8 Jahre zuvor

bei mir klappt es auch, wenn ich den Schalter nur an den pin sanschließe, also ich muss gar keine stromzufur bringen

10 Jahre zuvor

es geht darum das alle meine signale mit 24V anokemmn ich diese aber ja auf 5V runterkriegen muss. audferdem ist an diesem signal paralel auch noch ne led eingebaut 4,5V und 20mA. und du sagst ja das ich denn einfach vor der led nen optokoppler einffcge um denn damit von 24V auf 5V runterkomme oder? was mache ich denn da mit denn ganzen optokoppler bzw mit denn gnd?

Andree
10 Jahre zuvor

Hallo Stefan,
vielen Dank für die schnelle Info. Werde das natürlich bald testen und Bescheid geben ;)

Andree

Stefan Hermann
10 Jahre zuvor

Hallo Andree,

meinst Du eine Platine, die irgendwo anders verbaut ist? Dann könntest Du einen Optokoppler verwenden. Ich habe das hier mal erklärt: https://www.starthardware.org/2014/01/ein-altes-handy-als-arduino-input/

Statt dem hier beschriebenen Vibrationsmotors verbindest Du einfach die Anschlussstellen der LED.

Liebe Grüße

Stefan“

Andree
10 Jahre zuvor

Hi hätte da mal ne Frage:
Angenommen ich habe eine Platine die mir zb. bei einem Ereignis eine Led anschaltet bzw ausschaltet. Nun hat diese Platine aber eben nur die 3 Volt Ausgang die die Led braucht. Ist es nun möglich mit dem Arduino den Schaltzustand der Led auszulesen und dann etwas anderes schaltet? Also Led externe Platine an- Arduino schaltet Motor an und umgekehrt?

Vielen Dank in voraus
Andree

11 Jahre zuvor

Hi Anja,

sorry für die späte Antwort. Klar, das kannst Du machen. Das passiert in der Programmierung. Du zählst einfach die Millisekunden von dem Zeitpunkt, wenn der Taster gedrückt wird, bis zu dem Zeitpunkt, bis der Taster losgelassen wirst.

Liebe Grüße

Stefan“

Anja
11 Jahre zuvor

Kann man einen Servo auslösen, indem man den Taster mehrmals hintereinander drückt? Also eine Aktion soll erst ausgelöst werden, wenn man sozusagen die Taster entweder öfters hintereinander drückt und lange gedrückt hält.
Bitte um Hilfe. Danke.

11 Jahre zuvor

@Reiner: Naja, wenn ich in Deutsch gut gewesen wäre, hättest Du jetzt meine Romane lesen müssen und keine Tutorials zu Elektronik ;-)
Egal: Kritik angenommen, geschalten in geschaltet geändert – auf dieser Seite jedenfalls.

Reiner
11 Jahre zuvor

Es heißt abgeschaltet und nicht abgeschalten !