LEDChaserProgTasteVerarbeiten

Aus Arduino Hannover
Version vom 2. Oktober 2018, 09:26 Uhr von Danimath (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Die Taste verarbeiten == Bisher hast Du Ausgabefunktionen und -elemente kennen gelernt (OK: ein Ausgabeelement - die LED). Aber an einen Microcontroller (w…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Die Taste verarbeiten

Bisher hast Du Ausgabefunktionen und -elemente kennen gelernt (OK: ein Ausgabeelement - die LED). Aber an einen Microcontroller (wie dem Arduino, der in dem LEDChaser eingebaut ist) können auch verschiedene Eingabeelemente angeschlossen werden, so dass er auf seinen Umwelt reagieren kann. In diesem Kapitel wirst Du einen Taster kennen lernen (manchmal auch "die Taste" genannt - wir werden hier beide Begriffe verwenden). Und hier ist die erste Aufgabe für den Taster: Wenn der der Taster gedrückt wird, soll eine LED angehen. Zum Programmieren ist das aber noch nicht genau genug: was ist mit "wenn" gemeint? Heißt das "solange der Taster gedrückt wird", oder "sobald der Taster gedrückt wird"? Fangen wir mit der ersten Variante an: Eine LED leuchtet, solange die Taste gedrückt wird.

/*  Sketch 07 - Taste schaltet LED
 *
 *  LED leuchtet, solange TASTE gedrückt 
 *
 *
 ****************************************/

const byte TASTE_PIN = 2;
const byte LED_PIN   = 3;

// setup: wird einmal zu Beginn ausgeführt

void setup ()
{
    pinMode (LED_PIN, OUTPUT);
    pinMode (TASTE_PIN, INPUT);
    digitalWrite (TASTE_PIN, INPUT_PULLUP);
}

// loop: wird immer wieder ausgeführt

void loop ()
{
    byte t;
    t = digitalRead (TASTE_PIN);
    digitalWrite (LED_PIN, t);
}

Den ersten Befehl in der setup-Funktion kennst Du schon; damit wird wird der LED_PIN auf "Ausgabe" geschaltet. Der nächste Befehl definiert, dass der Anschluss für die Taste ein Eingabeanschluss ist. Die dritte Zeile aktiviert den internen Pullup-Widerstand. Nimm dies erst einmal so hin - eine Erklärung dafür folgt im nächsten Kapitel.

In der loop-Funktion wird zuerst eine Variable t definiert. Ein Datentyp byte reicht hier, weil nur die Werte 0 und 1 gespeichert werden. Anschließend wird der Tastenwert gelesen (ist die Taste gedrückt (0) oder nicht (1)) und in der Variablen gespeichert. Mit dieser Variablen wird dann die LED gesteuert (an oder aus). Mit diesem Sketch reagiert der Microcontroller auf eine Eingabe und löst damit eine Ausgabe aus.

Die loop-Funktion lässt sich noch ein wenig vereinfachen:

void loop ()
{
    digitalWrite (LED_PIN, digitalRead (TASTE_PIN));
}

Auf diese Weise sparst Du eine Variable ein (und damit Speicherplatz).