Nr.06 Taster am Arduino

Sketch Nr.6: Eine LED per Tastendruck aktivieren

Aufgabe: Eine LED soll für 5 Sekunden leuchten, wenn ein Taster betätigt wurde.

Material: Arduino / eine LED (blau) / Ein Widerstand mit 100 Ohm / Ein Widerstand mit 1K Ohm (1000 Ohm) / Breadboard / Kabel / Taster (Materialbeschaffung: www.funduinoshop.com)

Der Mikrocontroller kann an seinen digitalen Pins nicht nur Spannungen ausgeben, sondern auch auslesen. Dies wollen 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 „herunter zieht“, 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.

Aufbau

Der Sketch:

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.

Sketch ohne Erklärungen:

int LEDblau=6;
int taster=7;
int tasterstatus=0;

void setup()
{
pinMode(LEDblau, OUTPUT);
pinMode(taster, INPUT);
}

void loop()
{
tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH)
{
digitalWrite(LEDblau, HIGH);
delay (5000);
digitalWrite(LEDblau, LOW);
}
else
{
digitalWrite(LEDblau, LOW); 
}
}

Erweiterung : 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.

Material: Arduino / eine LED(blau) / Einen Widerstand mit 100 Ohm / Zwei Widerstände mit 1k Ohm (100 Ohm)) / Breadboard / Kabel / Taster (Materialbeschaffung: www.funduinoshop.com)

 

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.

Aufbau

Der Sketch

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.

Sketch ohne Erklärungen:


int LEDblau=6;
int taster1=7;
int taster2=8;
int tasterstatus1=0;
int tasterstatus2=0;

void setup()
   
    {
    pinMode(LEDblau, OUTPUT);
    pinMode(taster1, INPUT);
    pinMode(taster2, INPUT);
    }

void loop()
{
tasterstatus1=digitalRead(taster1);


if (tasterstatus1 == HIGH)
    {
    digitalWrite(LEDblau, HIGH);
    delay (5000);
    digitalWrite(LEDblau, LOW);
    }

else

    {
    digitalWrite(LEDblau, LOW); 
    }
    

tasterstatus2=digitalRead(taster2);

if (tasterstatus2 == HIGH)
    
    {
    digitalWrite(LEDblau, HIGH);
    delay (500);
    digitalWrite(LEDblau, LOW);
    }

else

    {
    digitalWrite(LEDblau, LOW); 
    }
 }