Zunächst nochmal kurz geklärt, was ist digitaler Input in Vergleich zu allem anderen? In der Welt der Mikrokontroller bedeutet ein digitales Signal im Wesentlichen: Entweder fließt Strom oder eben nicht.
Das einfachste Beispiel für digitalen Input ist ein Schaltkreis mit einem Mikrotaster (oder sonstigem Schalter). Wird der Taster gedrückt, dann schließt er den Schaltkreis und der Strom fließt, ist er nicht gedrückt dann ist der Stromkreis offen und es fließt kein Strom. Soviel also zur Theorie.
Um das auch praktisch auszuprobieren, machen wir jetzt eine kleine Übung. Ihr braucht dazu 1 Arduino, 1 Breadboard, 1 Mikrotaster, 1 Widerstand (ca. 1-2 kOhm) und ein paar Kabel.
Die Schaltung wird so aufgebaut, dass der Mikrotaster auf der einen Seite (je 2 Pins sind intern verbunden und somit 1 Seite) mit GND verbunden wird und auf der anderen Seite mit dem Widerstand. Vom Widerstand gehts dann weiter zu +5V und zwischen Schalter und Widerstand wird eine Verbindung zu Pin 8 hergestellt. Ich hab das ganze mal in Fritzing vorbereitet, wer will kann sich auch das Sketch runterladen.
Fritzing Sketch Button
Einige von euch, die schon mit elektrischen Kreisen zu tun hatten, werden sich jetzt vermutlich fragen, wozu der Widerstand und die Verbindung zu Plus und zu Minus gut sind. Würde man nur die Verbindung GND zu Pin oder +5V zu Pin herstellen und diese durch den Schalter unterbrechen, fließt kein Strom. Dummerweise kann Arduino mit dieser Situation nichts anfangen, denn wo kein Strom fließt kann der Mikrokontroller auch nichts feststellen und sich sozusagen nicht entscheiden welches Signal er empfängt. Liest man einen nicht verbundenen Pin aus, ist es rein zufällig welchen Wert man bekommt.
Damit das nicht passiert, setzen wir eine 2. Verbindung über den Widerstand, den man übrigens auch als Pull-Up bzw. Pull-Down Widerstand bezeichnet, je nachdem ob er am Plus- oder Minus-Pol angeschlossen ist. Ist der Schalter jetzt nicht gedrückt, fließt also ein sehr geringer Strom über den Plus-Kontakt und Arduino kann immerhin einen Wert bestimmen. Wird aber der Taster gedrückt, fließt der Strom über den Minus-Pol, da elektrischer Strom immer den Weg des geringsten Widerstands geht und dieser führt hier durch den Taster. Dadurch bekommt Arduino dann eindeutig ein anderes Signal und diesen Unterschied können wir dann auch im Programm auslesen.
Apropos Programm, was jetzt natürlich noch fehlt ist der Quelltext für unser kleines Programm. Glücklicherweise versorgt uns die Arduino IDE auch hier mit einem Beispiel-Code, den wir bequem nutzen können, siehe Examples > Digital > Button. Die einzige Änderung die ich vorgenommen habe ist in der Zeile 12, wo ich die Variable inputPin auf den von uns genutzten Pin 8 umgestellt habe.
/*
* Button
* by DojoDave
*
* Turns on and off a light emitting diode(LED) connected to digital
* pin 13, when pressing a pushbutton attached to pin 7.
*
* http://www.arduino.cc/en/Tutorial/Button
*/
int ledPin = 13; // choose the pin for the LED
int inputPin = 8; // choose the input pin (for a pushbutton)
int val = 0; // variable for reading the pin status
void setup() {
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare pushbutton as input
}
void loop(){
val = digitalRead(inputPin); // read input value
if (val == HIGH) { // check if the input is HIGH
digitalWrite(ledPin, LOW); // turn LED OFF
}
else {
digitalWrite(ledPin, HIGH); // turn LED ON
}
}
Ist die Schaltung fertig aufgebaut und der Code aufs Arduino überspielt, könnt ihr jetzt mit dem Schalter die LED auf dem Arduino-Board ein- bzw. ausschalten.
Viel Spass beim Ausprobieren! Wenns noch Fragen oder Probleme gibt, immer rein in die Kommentare.