Den Tasterstatus mittels einer LCD-Anzeige ausgeben

Sie sind hier: WDF-Startseite

Signale lesbar im Klartext anzeigen

Um digitale Sensorsignale mit dem Arduino auszuwerten, bietet es sich an, das dazu nötige Verständnis zunächst mit einem einfachen Taster zu erarbeiten. Auf diese Weise wird der Grundstock gelegt, zahlreiche Sensoren korrekt einzusetzen.

Kleincomputer, wie eben der Arduino, sind optimal geeignet, Sensorsignale auszuwerten, zu verknüpfen und Aktoren in Abhängigkeit dieser Signale in Bewegung zu versetzen. Doch ist es zunächst sinnvoll, diesen interessanten Weg erst einmal mit der Auswertung eines einfachen Signals zu ergründen, den ein einfacher Taster erzeugt.

Ziel der einfachen Übung ist es, an einer bestimmten Stelle einer LCD-Anzeige eine Information auszugeben, die mitteilt, ob ein Taster gedrückt ist oder nicht. Dabei bietet es sich an, den Zustand eines nicht gedrückten Tasters mit einer Null auszudrücken.

Wird hingegen der Taster gedrückt, so soll an der gleichen Stelle auf der LCD-Anzeige anstatt der Null eine Eins erscheinen.

Um dies umzusetzen, ist ein Taster normalerweise an einem Digital-Pin anzuschließen. Da diese jedoch nicht in üppiger Zahl vorhanden sind, bietet es sich an, dafür einen Analog-Pin zu nutzen, da diese per pinMode-Befehl in einen digitalen Eingang verwandelt werden können. Daher spricht nichts dagegen, eine Verdrahtung vorzunehmen, wie sie im folgenden Bild zu sehen ist.

Fragen wirft der 10 Kiloohm-Widerstand auf. Dieser ist dafür vorgesehen, ein sauberes Low-Signal zu erzeugen. Anders als bei einer robusten Relais-Steuerung ist nämlich die korrekte Funktion filigraner Microelektronik nicht unbedingt gegeben, wenn die Luftfeuchtigkeit oder andere Einflüsse sich negativ auf den Signalpegel auswirken. Daher ist es ratsam, diesen Widerstand nicht wegzulassen, um einer Fehlersuche bei Nichtfunktion der einfachen Schaltung aus dem Weg zu gehen.

Das entsprechende Programm, im Fall des Arduino "Sketch" genannt, könnte wie folgt aussehen:

/**************************************************************
 Testprogramm zur Ansteuerung eines 16x2 LCD-Displays
 sowie der Ausgabe des Status eines Tasters
 Nötige Bibliothek: LiquidCrystal.h
**************************************************************/
// LCD Library einbinden
#include <LiquidCrystal.h>
// LCD Pins festlegen
// RS, E, D4, D5, D6, D7
LiquidCrystal lcd(11, 10, 2, 3, 4, 5);
// Tastervariablen und Eingang
int tasterPin = A2; // Analogeingang nimmt Tastersignale auf
int tasterStatus;   // Variable für Tasterstatus
void setup() 
{    
    // LED Hintergrundbeleuchtung
    analogWrite(9, 150);
    // Analogeingang A2 als Digitaleingang festlegen
    pinMode(A2, INPUT);
    // LCD Ausgabe
    lcd.begin(16, 2);
    lcd.setCursor(3, 0);  
    lcd.print("Hallo Welt!");
    lcd.setCursor(0, 1);
    lcd.print("CNT:");
}
void loop() {
    tasterStatus = digitalRead(tasterPin); // Tasterstatus feststellen 
    if(tasterStatus == HIGH) //Wenn Taster gedrückt, dann...
      {
      lcd.setCursor(12, 1);
      lcd.print("1");
      }
    else // Wenn Taster nicht gedrückt, dann...
      {
      lcd.setCursor(12, 1);
      lcd.print("0");
      }
    lcd.setCursor(5, 1);
    lcd.print(millis() / 1000);
    
}

Erläuterung:

Wichtig an diesem Programm ist der Befehl ›pinMode(A2, INPUT);‹. Dieser Befehl legt fest, dass der analoge Eingang A2 ab sofort ein digitaler Eingang ist und entsprechende Signale aufnehmen kann.

Über den Befehl digitalRead(tasterPin) wird ermittelt, ob eine Taste gedrückt wurde. Ist das nicht der Fall, so erhält die Variable ›tasterStatus‹ den Wert LOW ansonsten den Wert HIGH. Diese Werte können mittels der if-Abfrage genutzt werden, um unterschiedliche Reaktionen des Programms auszuführen. Wichtig ist es zu erkennen, dass eine logische ist-gleich-Abfrage stets mit zwei „==“-Zeichen durchgeführt werden muss!

Als Resultat der Verzweigung wird – je nachdem ob eine Taste gedrückt wurde oder nicht –über die LCD-Anzeige an der Cursor-Position 12,1 entweder eine Null oder eine Eins ausgegeben.


********