Beschreibung
Was ist ein Taster?
So wird ein drückbarer Knopf in Fachkreisen genannt.
Der Arduino kann an seinen digitalen Pins nicht nur Spannungen (Strom)
ausgeben, um z.B. einen Motor anzuschalten. Er kann auch Spannungen
(Daten) einlesen, wie z.B beim Ultraschallsensor. Dieses Mal wollen wir
mithilfe eines Tasters eine LED zum Leuchten bringen.
Bei dem Aufbau gibt es dieses Mal eine Besonderheit. Verbindet man den
Taster ganz einfach mit dem Arduino und drückt den Taster, dann liegt am
Pin des Arduinos eine Spannung an. Die Spannung kann aber nicht so
schnell wieder entweichen, sodass unser Arduino denkt, wir halten den
Taster für viele Sekunden gedrückt. Das wollen wir natürlich nicht! Um
das zu verhindern und so schnell wie möglich klicken zu dürfen, brauchen
wir einen Widerstand mit 1000 Ohm (1 K Ohm).
Physik: Widerstände
Man kann sich das so vorstellen, als würden an dem besagten Pin ganz
viele Elektronen herumschwirren. Wenn der Taster dann losgelassen wird,
kommen keine neuen Elektronen mehr zu dem Pin am Arduino hinzu. Jetzt
kommt der Knackpunkt. Die Elektronen, die es sich vorher auf dem Pin
gemütlich gemacht haben, sind dann immer noch da und entweichen nur ganz
langsam über kleine Kriechströme. Solange sich noch Elektronen auf dem
Pin aufhalten, denkt der Arduino, dass der Taster nicht nur kurz sondern
ganz lange gedrückt wird. Durch einen Widerstand können die Elektronen
deutlich schneller abfließen. Der Arduino erkennt folglich, dass der
Taster nur kurz gedrückt wurde. Da der Widerstand die Spannung an dem
Eingangspin immer auf 0V „herunterzieht“, wird er auch als „PULLDOWN-“
Widerstand bezeichnet.
ACHTUNG: Wenn man einen zu kleinen Widerstand verwendet, kann beim
Drücken des Tasters ein Kurzschluss auf dem Mikrocontroller entstehen.
Verkabelung
Code
Wir wollen den Arduino dazu bringen, dass er jedes Mal die LED leuchten
lässt, wenn wir den Taster drücken. Damit wir richtig schnell drücken
können, lassen wir die LED nur ganz kurz (1/10 Sekunde) aufleuchten.
int LED = 6;
int taster = 7;
int tasterStatus = 0;
void setup() {
pinMode(LED, OUTPUT);
pinMode(taster, INPUT);
}
void loop() {
tasterStatus = digitalRead(taster);
if (tasterStatus == HIGH) { // wird der Knopf gedrückt, passiert Folgendes:
digitalWrite(LED, HIGH); // LED wird angeschaltet
delay(100); // LED leuchtet für eine Zehntel Sekunde
digitalWrite(LED, LOW); // LED wir ausgeschaltet
} else { // sonst :
digitalWrite(LED, LOW); // LED wird ausgeschaltet / bleibt ausgeschaltet
}
}
Aufgaben
Beschreibe, was der Code tut!
Die Pins für die LED, den Taster und den Tasterstatus werden gesetzt und
im Setup die LED als Output und der Taster als Input festgelegt. In der
loop wird der Tasterstatus gelesen, wenn er einmal gedrückt wurde soll
die LED leuchten, ansonsten bleibt sie aus oder wird ausgeschaltet, da
der wiederholt gedrückte Taster als Auschaltoperation verstanden wird.
Baut den dargestellten Aufbau einmal nach, lasst die LED aber
durchgehend leuchten bis man sie wieder mit dem Taster auschaltet.
Die Zeilen 14 + 15 dafür entfernen.