Inhaltsverzeichnis
Alle Produkte, die du für diese Anleitung benötigst
Eine LED per Tastendruck aktivieren
Aufgabe: Eine LED soll für 5 Sekunden leuchten, wenn ein Taster betätigt wurde.
Der Mikrocontroller kann an seinen digitalen Pins nicht nur Spannungen ausgeben, sondern auch auslesen. Dies möchten wir in diesem Programm ausprobieren.
Bei dem Aufbau gibt es jedoch eine Besonderheit. Wenn man den Taster einfach nur mit dem Mikrocontroller verbindet, dann liegt an dem Pin des Mikrocontrollers eine Spannung an, sobald der Taster gedrückt wird. 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 Mikrocontroller 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. Der Mikrocontroller denkt dann also, dass der Taster nicht nur kurz gedrückt wird, sondern dass er ganz lange gedrückt wird. Nämlich so lange, bis sich keine Elektronen mehr auf dem Pin aufhalten.
Dieses Problem kann man dadurch beheben, dass man den Pin über einen Widerstand mit ca. 1000 Ohm (1 K Ohm) erdet. Die Elektronen können dadurch recht schnell vom Pin abfließen und der Mikrocontroller erkennt, dass der Taster nur kurz „angetastet“ wurde. Da der Widerstand die Spannung an dem Eingangspin immer auf 0V „herunterzieht“, wird er auch als „PULLDOWN-“ Widerstand bezeichnet.
ACHTUNG: Wenn man dafür einen zu kleinen Widerstand verwendet, kann beim Drücken des Tasters ein Kurzschluss auf dem Mikrocontroller entstehen.
Der Schaltplan

Der Programmcode
int LEDblau=6; //Das Wort „LEDblau“ steht jetzt für den Wert 6.
int taster=7; //Das Wort „taster“ steht jetzt für den Wert 7.
int tasterstatus=0; //Das Wort „tasterstatus“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster gedrückt ist oder nicht.
void setup() //Hier beginnt das Setup.
{
pinMode(LEDblau, OUTPUT); //Der Pin mit der LED (Pin 6) ist jetzt ein Ausgang.
pinMode(taster, INPUT); //Der Pin mit dem Taster (Pin 7) ist jetzt ein Eingang.
}
void loop()
{ //Mit dieser Klammer wird der Loop-Teil geöffnet.
tasterstatus=digitalRead(taster); //Hier wird der Pin7 ausgelesen (Befehl:digitalRead). Das Ergebnis wird unter der Variable „tasterstatus“ mit dem Wert „HIGH“ für 5Volt oder „LOW“ für 0Volt gespeichert.
if (tasterstatus == HIGH)//Verarbeitung: Wenn der Taster gedrückt ist (Das Spannungssignal ist hoch)
{ //Programmabschnitt des IF-Befehls öffnen.
digitalWrite(LEDblau, HIGH); //dann soll die LED leuchten
delay (5000); //und zwar für für 5 Sekunden (5000 Millisekunden).
digitalWrite(LEDblau, LOW); //danach soll die LED aus sein.
} //Programmabschnitt des IF-Befehls schließen.
else //...ansonsten...
{ //Programmabschnitt des else-Befehls öffnen.
digitalWrite(LEDblau, LOW); //...soll die LED aus sein.
} //Programmabschnitt des else-Befehls schließen.
} //Mit dieser letzten Klammer wird der Loop-Teil geschlossen.
Eine LED mit zwei Tastern ansteuern
Aufgabe: Eine LED soll für 5 Sekunden aufleuchten, wenn ein Taster(1) betätigt wird. Durch die Betätigung des Taster(2) soll die LED für 0,5 Sekunden aufleuchten.
Der Versuchsaufbau orientiert sich am „Sketch Nr. 6: Eine LED per Tastendruck aktivieren“. Um die Schwierigkeit ein wenig zu erhöhen, verwenden wir in diesem Versuchsaufbau
zwei Taster anstatt einem. Das Ziel dieser Aufgabe ist es, eine LED über zwei unterschiedliche Taster ansteuern zu können. Durch das Betätigen von Taster1 soll die blaue LED 5 Sekunden (5000 Millisekunden) aufleuchten.
Durch das Betätigen von Taster2 soll die blaue LED für 0,5 Sekunden (500 Millisekunden) aufleuchten.
Der Schaltplan

Der Programmcode
int LEDblau=6; //Das Wort „LEDblau“ steht jetzt für den Wert 6.
int taster1=7; // Das Wort „taster1“ steht jetzt für den Wert 7.
int taster2=8; // Das Wort „taster2“ steht jetzt für den Wert 8.
int tasterstatus1=0; // Das Wort „tasterstatus1“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster1 gedrückt ist oder nicht.
int tasterstatus2=0; // Das Wort „tasterstatus2“ steht jetzt zunächst für den Wert 0. Später wird unter dieser Variable gespeichert, ob der Taster2 gedrückt ist oder nicht.
void setup() // Hier beginnt das Setup.
{
pinMode(LEDblau, OUTPUT); //Der Pin mit der LED (Pin 6) ist jetzt ein Ausgang.
pinMode(taster1, INPUT); //Der Pin mit dem Taster1 (Pin 7) ist jetzt ein Eingang.
pinMode(taster2, INPUT); //Der Pin mit dem Taster2 (Pin 8) ist jetzt ein Eingang.
}
void loop()
{ // Hier wird der loop (vom engl. Loop = Schleife) geöffnet
tasterstatus1=digitalRead(taster1); // Hier wird der Pin7 ausgelesen (Befehl: digitalRead). Das Ergebnis wird unter der Variable "tasterstatus1" mit dem Wert "HIGH" für 5Volt oder "Low" für 0Volt gespeichert.
if (tasterstatus1 == HIGH) //Wenn der Taster1 gedrückt wird (Spannungssignal ist hoch)
{ // if-Schleife wird geöffnet
digitalWrite(LEDblau, HIGH); // soll die blaue LED leuchten
delay (5000); // und zwar für 5 Sekunden (5000 Millisekunden).
digitalWrite(LEDblau, LOW); // anschließend soll sich die LED abschalten.
} // if-Schleife wird geschlossen
else // ...ansonsten...
{ // Programmabschnitt des else-Befehls wird geöffnet
digitalWrite(LEDblau, LOW); // ... soll die LED nicht leuchten
} // Programmabschnitt des else-Befehls wird geschlossen
tasterstatus2=digitalRead(taster2); // Hier wird der Pin8 ausgelesen (Befehl: digitalRead). Das Ergebnis wird unter der Variable "tasterstatus2" mit dem Wert "HIGH" für 5Volt oder "LOW" für 0Volt gespeichert.
if (tasterstatus2 == HIGH) //Wenn der Taster2 gedrückt wird (Spannungssignal ist hoch)
{ // if-Schleife wird geöffnet
digitalWrite(LEDblau, HIGH); // soll die blaue LED leuchten
delay (500); // und zwar für 0,5 Sekunden (500 Millisekunden).
digitalWrite(LEDblau, LOW); // anschließend soll sich die LED abschalten.
} // if-Schleife wird geschlossen
else // ...ansonsten...
{ // Programmabschnitt des else-Befehls wird geöffnet
digitalWrite(LEDblau, LOW); // ...soll die LED nicht leuchten
} // Programmabschnitt des else-Befehls wird geschlossen
} // Mit der letzten Klammer wird der LOOP geschlossen.
Funduino - Dein Onlineshop für Mikroelektronik
-
Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
-
Mehr als 3.500 Artikel sofort verfügbar!
-
Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.