Shop-Wechsel

Der Warenkorb wird nicht übernommen.

Zum Privatkunden Shop

Arduino

LEDs und Taster nicht nutzbar auf ELV I2C-BUS Displaymodul I2C-LCD, Komplettbausatz (Arduino UNO R3)

Beiträge zu diesem Thema: 4
LEDs und Taster nicht nutzbar auf ELV I2C-BUS Displaymodul I2C-LCD, Komplettbausatz (Arduino UNO R3)
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
11.02.2015, 14:22
Sehr geehrte Damen und Herren,

ich habe derzeit ein Problem mit dem oben genannten Artikel im Zusammenhang mit einem Arduino UNO R3 und Arduino DUE.

Ich das Displaymodul ordnungsgemäß nach der Anleitung zusammengebaut und die erforderlichen Bibliotheken in meine Arduino IDE (1.5.8) installiert.
Anschließend habe ich das Beispielprogramm "runningLED" aus der Library, der Webseite des Artikels, auf den Arduino gespielt.
Die Pins auf dem Arduino Board und dem Displaymodul wurden beachtet.

Jedenfalls nachdem das Programm "runningLED" bespielt war, hat sich auch nach mehreren Minuten keine LED zum Leuchten bringen lassen.

runningLED

/******************************************************************************
Beispiel: runningLED

Beschreibung: Dieses Beispiel zeigt die Ansteuerung der LEDs auf dem
I2C-LCD-Modul anhand eines Lauflichts
******************************************************************************/
#include "Wire.h"
#include "TwoWireLCD.h"

/******************************************************************************
globale Variablen
******************************************************************************/
// eingeschaltete LEDs
unsigned char leds = 0x01;

// Richtung des Lauflichts
unsigned char dir = 1;

/******************************************************************************
Funktionen
******************************************************************************/
void setup()
{
// Initialisierung des I2C und des I2C-LCD-Moduls
Wire.begin();
LCD.begin();
}

void loop()
{
// aktuelle LED einschalten (negative Logik: LED leuchtet bei einer 0)
LCD.setLeds(~leds);

delay(100);

// die eingeschaltete LED um eine Position nach links bzw. rechts
// verschieben.
if(dir)
{
leds = leds << 1;

if(leds == LED_4)
dir = 0;
}
else
{
leds = leds >> 1;

if(leds == LED_1)
dir = 1;
}
}

-------
Das Kompilieren und Hochladen war natürlich erfolgreich. Der Arduino funktioniert ebenfalls einwandfrei. Ausprobiert mit Arduino UNO R3 und Arduino DUE R3.

Mit den Tastern verhält es sich gleich.
Das Beispielprogramm "simpleClock" reagiert überhaupt nicht auf die Taster.

simpleClock

/******************************************************************************
Beispiel: simpleClock

Beschreibung: Dieses Beispiel soll anhand einer Uhr die Auswertung der Tasten
auf dem I2C-LCD-Modul verdeutlichen. Nach dem Einschalten wird
ist zunächst die Uhrzeit einzustellen. Im Display erscheint die
Anzeige "ST 0" für die Einstellung der Stunden. Mit Hilfe der
Tasten 1 und 2 kann der Wert verändert werden. Durch Betätigen
der Taste 3 wird zur Einstellung der Minuten gewechselt. Nachdem
wiederum mit den Tasten 1 und 2 der Wert eingestellt wurde,
beginnt die Uhr nach Drücken der Taste 3 zu laufen.

Hinweis: Für die Auswertung des externen Interrupts wird die Library
"PinChangeInt" verwendet. Diese ist im Internet auf folgender Seite
zu finden:
http://www.arduino.cc/playground/Main/PinChangeInt

Achtung: Dieses Beispiel soll im Wesentlichen die Tastenauswertung über
das I2C-LCD-Modul verdeutlichen. Für das Sekundensignal der Uhr wird
die delay-Funktion verwendet. Dieses ist zum einen sehr ungenau und
zum anderen sehr ineffizient, jedoch hätte eine Verwendung der Timer
das Beispiel unnötig vergrößert.
******************************************************************************/

#include "Wire.h"
#include "TwoWireLCD.h"
#include "PinChangeInt.h"

/******************************************************************************
globale Variablen
******************************************************************************/
// Texte während der Zeiteinstellung (ST: Stunde, MI: Minute)
char text = "STMI";

// Uhrzeit
unsigned char second = 0;
unsigned char minute = 0;
unsigned char hour = 0;

// aktueller Modus der Anzeige
enum modes
{
CLOCK_RUN = 0,
SETTING_MINUTE,
SETTING_HOUR
};
unsigned char actMode = SETTING_HOUR;

// Zustand der Tasten
unsigned char keys;

// Anzeige, ob eine Taste gedrückt wurde
volatile unsigned char keyPressDetected = 0;

/******************************************************************************
Funktionen
******************************************************************************/
// die Funktion "keyPress" wird ausgeführt sobald ein Tastendruck detektiert wurde
// (externer Interrupt)
void keyPress(void)
{
keyPressDetected = 1;
}

void setup()
{
// der Interrupt-Pin des I2C-LCD-Moduls liegt auf dem Pin D15 des
// Arduino-Boards und wird daher als Eingang initialisiert. Bei
// einer fallenden Flanke an diesem Pin wird die Funktion "keyPress"
// ausgeführt.
pinMode(15, INPUT);
PCattachInterrupt(15, keyPress, FALLING);

// Initialisierung des I2C und des I2C-LCD-Moduls
Wire.begin();
LCD.begin();

// den Interrupt des I2C-LCD-Moduls zurücksetzen und anschließend
// aktiveren.
LCD.resetKeyInterrupt();
LCD.enableKeyInterrupt();

// Dauerschleife bis die Stunden und Minuten eingestellt wurden
while(actMode)
{
// Auswertung der Tasten
if(keyPressDetected)
{
keys = LCD.readKeys();

LCD.resetKeyInterrupt();
keyPressDetected = 0;
}
else
{
keys = NO_KEY;
}

// Taste 1 wurde gedrückt:
// je nach aktuellem Zustand die Stunden bzw. Minuten hochzählen
if((keys & KEY_1) == 0)
{
if(actMode == SETTING_HOUR)
{
if(hour < 23)
hour++;
}
else if(actMode == SETTING_MINUTE)
{
if(minute < 59)
minute++;
}
}

// Taste 2 wurde gedrückt:
// je nach aktuellem Zustand die Stunden bzw. Minuten herunterzählen
if((keys & KEY_2) == 0)
{
if(actMode == 2)
{
if(hour > 0)
hour--;
}
else if(actMode == SETTING_HOUR)
{
if(minute > 0)
minute--;
}
}

// Taste 3 wurde gedrückt:
// in den nächsten Zustand wechseln
if((keys & KEY_3) == 0)
--actMode;

// Ausgabe zyklisch aktualisieren
if(actMode == SETTING_HOUR)
{
LCD.print(&text, 2);
LCD.print(hour, NO_LEADING_ZEROS);
LCD.update();
}
else if(actMode == SETTING_MINUTE)
{
LCD.print(&text, 2);
LCD.print(minute, NO_LEADING_ZEROS);
LCD.update();
}
}
}

void loop()
{
// Stunden und Minuten anzeigen (Anzeige der Sekunde durch Blinken des Doppelpunkts)
LCD.clearSegments();
LCD.print(hour*100 + minute, LEADING_ZEROS);
LCD.showColon(second & 0x01);
LCD.update();

// eine Sekunde warten (!!! siehe Beschreibung oben !!!)
delay(1000);

second++;

// Überläufe der Uhrzeit auswerten
if(second > 59)
{
second = 0;
minute++;

if(minute > 59)
{
minute = 0;
hour++;

if(hour > 23)
hour = 0;
}
}
}

-------

Muss ich noch irgendwas beachten, damit ich die LEDs und Taster fehlerfrei benutzen kann?

Das LCD-Display funktioniert bei allen Beispielen einwandfrei.
Der Arduino wird über USB mit Strom versorgt. Die Stromversorgung scheint stabil zu sein.


Mit freundlichen Grüßen
Jan
Aw: LEDs und Taster nicht nutzbar auf ELV I2C-BUS Displaymodul I2C-LCD, Komplettbausatz (Arduino UNO R3)
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
05.05.2015, 09:04
Hast Du alle Lötjumper überbrückt?
Ich habe alle Überbrückt und kann Taster usw. benutz.
Leider kriege ich die LED5 und LED6 nicht zum leuchten.

Gruß Kai
Aw: LEDs und Taster nicht nutzbar auf ELV I2C-BUS Displaymodul I2C-LCD, Komplettbausatz (Arduino UNO R3)
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
06.05.2015, 22:02
Vielen Dank für deine Antwort.

Es waren die Lötjumper. Jetzt funktioniert das Modul komplett ohne Probleme. LED6 und LED5 funktionieren ebenfalls.
Aw: LEDs und Taster nicht nutzbar auf ELV I2C-BUS Displaymodul I2C-LCD, Komplettbausatz (Arduino UNO R3)
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
07.05.2015, 07:22
kannst Du mir ein Tipp geben wie ich LED5 und LED6 zum leuchten bringe.

Gruß Kai