Die Taste – einfacher digitaler INPUT
Ein Taster ist ein erstaunlich einfacher, aber vielseitiger Bestandteil vieler Elektronikprojekte. Er hat lediglich zwei Zustände: offen und geschlossen. Im geschlossenen Zustand leitet er den Strom, während er im offenen Zustand den Stromfluss unterbricht. Wir können Taster grundsätzlich in zwei Kategorien einteilen: momentane und dauerhafte Taster.
Dauerhafte Taster halten ihren Zustand, bis sie erneut betätigt werden. Für unser aktuelles Projekt konzentrieren wir uns auf momentane Taster. Bei diesen fließt der Strom nur, während sie gedrückt werden. Sobald sie losgelassen werden, unterbricht der Stromfluss wieder. Dieses Prinzip wird häufig bei Computer-Tastaturen angewendet.
Wir sind bisher daran gewöhnt, mit dem Befehl digitalWrite() Signale auszusenden. Jetzt werden wir lernen, eingehende Signale von einem Taster mit dem Befehl digitalRead() zu empfangen. Hier stoßen wir auf eine Herausforderung: Wenn wir den Taster-Zustand auslesen, erhalten wir keine unmittelbare Rückmeldung vom Arduino. Daher ist es sinnvoll, eine Art von Feedback in unser Projekt einzubauen.
Das Feedback kann viele Formen annehmen. Du könntest beispielsweise eine LED aufleuchten lassen oder einen Ton abspielen. In diesem Fall werden wir allerdings die serielle Schnittstelle nutzen, die wir im vorherigen Kapitel kennengelernt haben. Jedes Mal, wenn du den Taster drückst, sendet der Arduino eine "1" an den seriellen Monitor. Wenn der Taster nicht gedrückt ist, sendet er eine "0". So können wir den Taster-Zustand in Echtzeit verfolgen. Übrigens ist es eine gute Praxis, neue Module zunächst mit dem seriellen Monitor zu testen. Das hilft dabei, Fehler frühzeitig zu erkennen und zu beheben.
Hier ist das Arduino-Skript, das wir verwenden werden:
In diesem Sketch definieren wir den Pin, an den der Taster angeschlossen ist (Pin 3). Im setup() stellen wir die Serielle Kommunikation ein und setzen den ButtonPin als Eingang. In der Loop-Funktion lesen wir dann den Zustand des Tasters aus und senden diesen Wert an den seriellen Monitor. Schließlich fügen wir eine kurze Verzögerung hinzu, um die Ausgabe lesbarer zu machen.
Aufbau und Verkabelung
Der Taster kommt auf einer kleinen Platine, die für eine einfache Handhabung und Montage sorgt. Diese Platine hat in der Regel drei Anschlusspins, die deutlich beschriftet sind:
VCC: Dies ist der Pin für die Stromversorgung. Du verbindest ihn mit dem 5V-Pin auf deinem Arduino.
GND: Dies ist der Ground-Pin, der mit dem GND-Pin auf dem Arduino verbunden wird, um einen gemeinsamen Bezugspunkt für die elektrische Spannung zu schaffen.
Signal: Dieser Pin ist für das Senden von Informationen vom Taster zum Arduino zuständig. Du verbindest ihn mit einem digitalen Eingangspin auf dem Arduino, in unserem Fall ist das der Pin 3.
Die Verkabelung ist einfach und geradlinig. Du beginnst damit, den VCC-Pin des Tastermoduls an den 5V-Pin deines Arduino-Boards anzuschließen. Als nächstes verbindest du den GND-Pin des Tasters mit dem GND-Pin auf dem Arduino. Zuletzt verbindest du den Signal-Pin des Tasters mit dem digitalen Eingangspin 3 auf deinem Arduino.
Durch diese Verkabelung kann der Arduino erkennen, ob der Taster gedrückt wird oder nicht. Jedes Mal, wenn der Taster gedrückt wird, ändert sich der Zustand des Signal-Pins, was der Arduino dann lesen kann. So einfach ist das! ###Bild
Sketch-Details und Erläuterungen
Zu Beginn legst du die Pinnummer fest, an die dein Taster angeschlossen ist, und speicherst diese in der Integer-Variable buttonPin.
int buttonPin = 3;
In der setup() Funktion initialisierst du die serielle Schnittstelle mit einer Baudrate von 9600 und legst fest, dass buttonPin als Eingangspin dient.
void setup()
{
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
Die pinMode() Funktion ist dir vermutlich schon aus dem LED-Sketch bekannt. Sie dient dazu, dem Arduino zu signalisieren, ob der spezifizierte Pin als Ein- oder Ausgang verwendet werden soll. Da du hier den Taster benutzt, ein eingehendes Signal, wählst du INPUT.
In der loop() Funktion, die kontinuierlich abläuft, geschieht nun das Herzstück des Sketchs. Du liest den aktuellen Zustand des Tasters mit der digitalRead() Funktion aus und speicherst ihn in der Variable buttonState. Die digitalRead() Funktion nimmt den zu lesenden Pin als Argument und gibt nur digitale Werte zurück: HIGH oder LOW. In diesem Fall fragt sie den Status des Pins kontinuierlich ab und überträgt den Wert direkt an buttonState.
int buttonState = digitalRead(buttonPin);
Je nach Zustand des Tasters wird in buttonState eine 0 für nicht gedrückt oder eine 1 für gedrückt gespeichert. Nun, da du den Zustand des Tasters in buttonState gespeichert hast, kannst du diese Information mit der Serial.println() Funktion an deinen Computer senden und im seriellen Monitor anzeigen lassen.
Serial.println(buttonState);
Zum Abschluss legst du eine kurze Pause von 1 Millisekunde ein. Mit delay(1) hältst du das Programm kurz an, was zur Stabilität des Systems beiträgt.
delay(1);
In diesem Teil hast du gelernt, wie man in einem Arduino-Sketch eine Variable definiert und den Pin, an den ein Taster angeschlossen ist, als Eingang konfiguriert.
Außerdem hast du die Anwendung der Funktion digitalRead() kennengelernt, die den Zustand eines Pins liest (entweder HIGH oder LOW), und die Anwendung der Funktion Serial.println(), die Informationen an den seriellen Monitor sendet. Zuletzt wurde dir die Notwendigkeit einer kurzen Verzögerung (in diesem Fall 1 Millisekunde) durch die Verwendung der Funktion delay() erläutert, um die Stabilität der Ausführung des Sketches zu gewährleisten.
intbuttonPin = 3;
voidsetup(){
Serial.begin(9600);
pinMode(buttonPin, INPUT);
}
voidloop(){
intbuttonState = digitalRead(buttonPin);
Serial.println(buttonState);
delay(1);
}