Welt der Fertigung
Sie sind hier: Startseite » Suchen » Lernen » Arduino

Signale im Klartext anzeigen

Tasterstatus via LCD-Anzeige ausgeben

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 wurde oder nicht. Dabei bietet es sich an, den Zustand eines nicht gedrückten Tasters mit einer Null auszudrücken.

Wird hingegen ein 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.

War dieser Artikel für Sie hilfreich?

Bitte bewerten Sie diese Seite durch Klick auf die Symbole.

Zugriffe heute: 2 - gesamt: 4538.