Beim folgenden Beispiel wird eine LED über einen Taster ein- und ausgeschaltet.
Zum Anschluss der LED und des Tasters an ein Arduino Board wird folgendes benötigt:
Steckbrett Ansicht:
Schaltplan:
Die LED mit dem 220 Ohm Vorwiderstand wird an den Arduino Pin 11 angeschlossen.
Der Taster ist auf einer Seite mit +5V verbunden. Auf der anderen Seite mit dem Arduino Pin 2 verbunden. Zudem mit dem 10 kOhm Widerstand an GND. Der Widerstand dient als 'Pull Down' Widerstand. Er zieht den Taster Ausgang auf LOW Pegel, wenn der Taster nicht betätigt wurde. Ansonsten würde der Pin 'in der Luft hängen. Erst wenn der Taster betätigt wird, liegt der Taster Ausgang an HIGH Pegel.
Taster gedrückt = Arduino Eingang hat HIGH Pegel.
Taster nicht gedrückt = Arduino Eingang hat LOW Pegel.
Man könnte auch auf den Pull Down Widerstand verwenden. Der Arduino verfügt über Built-In Pull Up Widerstände. Ein PullUp Widerstand zieht einen offenen Eingang auf HIGH Pegel. Diesen Pull Up widerstand kann man über den pinMode() Befehl aktivieren.
Damit müsste man aber auch die Logik für den Taster im Programm umkehren.
Taster gedrückt = Arduino Eingang hat LOW Pegel.
Taster nicht gedrückt = Arduino Eingang hat HIGH Pegel.
neuer Befehl ist digitalRead().
Liest einen Wert von einem vorgegebenen Digitalpin ein, entweder HIGH oder LOW.
Syntax
digitalRead(pin)
Parameter
pin: Die Nummer des Arduino-Digitalpins, welcher gelesen werden soll.
Rückgabewert
HIGH oder LOW
Um den Pin, an dem die LED angeschlossen wird, nicht ständig als Zahl angeben zu müssen, wird eine Konstante namens ledPin global erzeugt und mit dem Wert 11 (der Pin an dem die LED angeschlossen wird) initialisiert. Falls wir die LED später an einem anderen Pin anschliessen wollen, brauchen wir nur den Wert der Konstanten ändern und nicht überall im Programm.
Dasselbe machen wir für den Pin an dem der Taster angeschlossen wird. Der Taster wird in diesem Beispiel an Pin 2 angeschlossen
const int btnPin = 2;
const int ledPin = 11;
Zudem benötigen wir eine Variable um den Zustand des Tasters zwischen zu speichern.
int buttonState = 0;
In der Setup Funktion des Arduino Programms wird der Pin für die LED als Ausgang und der Pin für den Taster als Eingang mit dem pinMode() Befehl gesetzt.
pinMode(btnPin, INPUT);
pinMode(ledPin, OUTPUT);
In der Loop Funktion wird zunächst der Taster in die Variable buttonState mit der Funktion digitalRead() eingelesen. Die LED wird in Abhängigkeit des Tasten-Zustands (Variable buttonState) mit der Funktion digitalWrite() entweder ein- oder ausgeschaltet.
buttonState = digitalRead(2);
if (buttonState == HIGH) {
digitalWrite(11, HIGH);
} else {
digitalWrite(11, LOW);
}
Die Loop Funktion wird ständig aufgerufen, solange der Arduiuno läuft.
Das Programm schaltet die LED an, wenn der Taster gedrückt wird und aus, wenn der Taster losgelassen wird.
So sieht das komplette Programm aus:
// C++ code
//
const int btnPin = 2;
const int ledPin = 11;
int buttonState = 0;
void setup()
{
pinMode(btnPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop()
{
buttonState = digitalRead(btnPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
} else {
digitalWrite(ledPin, LOW);
}
delay(100); // Delay a little bit to improve simulation performance
}
Es gibt eine Simulation für TinkerCAD Circuits. Hier kann die Schaltung simuliert werden, inklusive des Arduino Programm in Blocks bzw C++.
Hier das Programm in Blocks:
Und so sieht die Simulation der Schaltung aus.
Der Link zur TinkerCAD Circuits Simulation. Ein Klick auf Start Simulation startet die Simulation.
Tinkercad Circuits - Arduino LED und Button