TLC5940 + LiquidCrystal

Hallo,
ich möchte in einer Anwendung, die den TLC5940 einsetzt auch das LiquidCrystal Display 16x2 einsetzen. Leider überschneiden sich beim 'klassischen' Anschlussbild einige Digital-Pins. Prinzipiell wären noch 6 Digital-Pins frei (nach Anschluss des TLC5940) nämlich: 0-1-2-5-6-7-8-12. Nach dem Anschlussplan für das LCD benötige ich 6 Digital-Pins:
2-3-4-5-11-12, da 3-4-11 sind schon am TLC angeschlossen, wäre es möglich diese zB. auf 6-7-8 o.a. zu legen.
Hat das Jemand schon mal ausprobiert? Bzw. welche Lösung ist für das Problem bekannt?
Bin für Anregungen dankbar!

Gruß Tom

Ich vermute mal das man dazu eine der beiden Bibliotheken umschreiben muss. Um die Pinbelegung dieser zu ändern !

Hier sieht man die klassische Anschlussbelegung für den TLC5940 und darunter für das LCD 16x2
Überschnitten sind nur die Pins 11 und 3, da beide auch PWM-Pins sind, sind diese wahrscheinlich für den TLC notwendig.
Kennt sich jemand mit der LCD Bibliothek aus? Ich denke diese benötigt nicht die PWM-Funktionalität Ard.Pin 11 liegt am LCD Enable Pin, Ard.Pin 3 liegt am LCD D6 Pin.
So denke ich, müßte man die LCD Bibliothek anpassen, allerdings verstehe ich da auf den ersten Blick recht wenig und wüßte nicht wie und was ich da ändern müßte.
Ich habe versucht diese Pins einfach anders anzuschließen und diese 'neuen' Pins dem Lcd-Objekt bei zu übergeben:

LiquidCrystal lcd(12, 7, 5, 4, 6, 2);

Das entspricht dann folgender Anschlussbelegung:

  • LCD RS pin to digital pin 12
  • LCD Enable pin to digital pin 7 // statt pin 11
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 6 // statt pin 3
  • LCD D7 pin to digital pin 2

doch das funktioniert nicht. Das Display zeigt nichts an. (Hello World - Example)


Klassische Anschlussbelegung von Liquid Crystal Display 16x2 und darüber TLC5940

Hast du zuvor überprüft ob das Display mit der Standartbeschaltung funktioniert um sicher zu gehen das es auch in Ordnung ist ?

Das sollte gehen, die LCD-Library braucht keine speziellen Pins. Jeder Digitalausgang ist ok, nur nicht 0 und 1, die werden von der seriellen Schnittstelle gebraucht und sollten nicht einfach so anderweitig verwendet werden.

Korman

Ja, ich habe den Verdacht, dass das Display defekt ist, denn die Standardschaltung zeigt auch keine Anzeige. Lediglich die HG-Beleuchtung funktioniert.
Das wäre sehr ärgerlich, da von Hongkong bestellt, zwar billig aber lange Lieferzeit. Ein Reset gibts da wohl nicht. Werde das nochmal in Ruhe aufbauen und anschließen. Vielleicht doch ein Anschlussfehler, wenn ich auch wenig Hoffnung habe.

Super es funktioniert doch. Der Pin für die Helligkeitseinstellung am Poti lag auf einem falschen Steckplatz (Luft), jetzt funktionierts. Also Problem gelöst, beides ist zusammen angeschlossen und funktionert! :smiley:

Da war ich doch etwas zu voreilig. Gut es funktioniert im Prinzip, doch nur, wenn ich lediglich Code für das LCD ausführe. Die Funktion Tlc.init(), die das Tlc-Objekt initialisiert (zur Ansteuerung des Tlc5940 Chip) führt anscheinend zu falschen Ausgangsimpulsen an den anderen Pins, an denen das LCD hängt.
Wenn tlc.init ausgeführt wurde, werden die Befehle für das LCD nicht, bzw nicht korrekt ausgeführt, auch wenn lcd.begin(16, 2) erneut aufgerufen wird.

// inlude Tlc5940 library code 
#include <Tlc5940.h>
// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 8, 5, 4, 6, 2);

void setup() {
  lcd.begin(16, 2);
  lcd.print("hello, world!");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print("Test");
  //Tlc.init(); //wenn Kommentar entfernt wird, dann steht in dem Display nach einiger Zeit in beiden Zeilen Test[seltsames Zeichen]Test usw.
}

Habe keine Ahnung, ob oder wie das Problem zu beheben sein sollte. Wenn überhaupt, müßte m.E. die Tlc5940 Bibliothek geändert werden, doch wie weiß ich nicht.
Vielleicht hat jemand eine Idee.

Ich verstehe die Aufregung nicht...
ich habe schon mehrfach die LCD-Pins erfolgreich geändert
Das Beispiel zeigt es doch und die Library kann das auch umsetzten.

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 8, 5, 4, 6, 2);

uppps... gerade erst gesehen das Dein Problem nicht mehr besteht

@LC_Data: ... gerade erst gesehen das Dein Problem nicht mehr besteht

Es funktioniert und funktioniert doch nicht, siehe meine letzte Antwort vor Deiner!

Du hast doch ein Breadboard im Einsatz...
also einfach mal die Displayanschlüsse umstecken und LCD-Init die Reihenfolge der Pin neu angeben... das sollte gehen...

OK - Jetzt scheint es wohl wirklich zu tun, nachdem ich festgestellt habe, dass Tlc.init() Einstellungen für Pin12 schreibt, habe ich die Initialisierung und Anschlüsse für das LCD geändert auf:

/* The circuit:
 * LCD RS pin to digital pin 8
 * LCD Enable pin to digital pin 7
 * LCD D4 pin to digital pin 5
 * LCD D5 pin to digital pin 4
 * LCD D6 pin to digital pin 3
 * LCD D7 pin to digital pin 2
 */

/* - - - - - - */
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 7, 5, 4, 6, 2);

Hier kann man die Schaltung in Aktion sehen:

Anmerkung: Die im ersten Post gemachte Aufstellung enthält einen Fehler: es sind nur die beiden Pins 3 und 11 schon am TLC angeschlossen Pin 4 nicht, wie ich fälschlicherweise geschrieben habe!