LCD mit Schieberegister funktioniert nicht richtig

Hallo,

Ich habe da so ein Problem mit meinem neuen LCD (16x2 Zeichen).
Das ganze läuft über den Schaltplan: http://code.google.com/p/arduinoshiftreglcd/#Bill's_version

Das hat mit einem anderen LCD und einer anderen Platine auch geklappt.

Jetzt habe ich hier ein etwas merkwürdiges Bild. Der Cursor funktioniert, das was geschrieben werden soll teilweise:
Wenn ich bspw. Hello World ausgebe kommt HVloWπl raus. Mir ist aufgefallen, dass jedes zweite Zeichen auf dem LCD jedem 3. Zeichen des Ausgabetextes entspricht: Hello World HVloWπl

Habt ihr vielleicht eine Idee, woran das liegen könnte?

Viele Grüße,
Alex

In der Zwischenzeit habe ich mal mein altes Display für meine neue Platine fertig gemacht und das funktioniert!

D.h. es liegt am Display. Das neue Display habe ich bei einem Wettbewerb geschenkt bekommen und deshalb kann ich keine genaue Angaben darüber machen. Bin mir aber ziemlich sicher, dass es das ist: http://www.datavision.com.tw/en/lcm_01_1.php?P_Id=6

Hinten sind noch 2 relativ große Chips drauf. Auf dem einen steht 1J3 HD44780A00. Also ist es auf jeden Fall der richtige Zeichensatz.

Gruß, Alex

Kannst Du den Sketch posten, mit dem Du das Display ansprichst?

Ist einfach nur ein Standardsketch. Hab ihn schon wieder verworfen, aber ich kann ja kurz einen neuen schreiben:

#include <LiquidCrystal_SR2W.h>

LiquidCrystal_SR2W lcd(11, 12);   //Schema der Pinbelegung: Data, Clock

void setup(){
  pinMode(10, OUTPUT);              // Hintergrundbeleuchtung
  digitalWrite(10, HIGH);
  lcd.begin(16,2);
  lcd.home();
  lcd.print("Hello World");
}

void loop(){
}

Es kann wie gesagt auch nur noch an dem neuen Display liegen… Vielleicht tatsächlich ein anderer Zeichensatz? Kann ich mir nicht vorstellen, weil das erste Zeichen immer richtig erkannt wird.

Gruß, Alex

Edit: Hier noch ein paar Bilder. Also ich empfehle jedem so eine kleine Platine zu basteln mit einem Schieberegister. Das erspart viel Kabelwirrwar :slight_smile:

Ob das Display "richtig kaputt" ist, oder ob es evtl an Timing Problemen mit deiner Schieberegister-Platine liegt, kannst du ja leicht mit der Standard LiquidCrystal Library und einem direkten Anschluss des Displays probieren.

Kann man in LiquidCrystal_SR2W die Taktgeschwindigkeit einstellen ?

Ixal: Habt ihr vielleicht eine Idee, woran das liegen könnte?

Eventuell irgendwo Lötbrücken mit Kurzschluß zwischen den LCD-Anschlüssen?

jurs: Eventuell irgendwo Lötbrücken mit Kurzschluß zwischen den LCD-Anschlüssen?

Nein, alles sorgfältig verlötet, aber danke für den Hinweis ;)

michael_x: Ob das Display "richtig kaputt" ist, oder ob es evtl an Timing Problemen mit deiner Schieberegister-Platine liegt, kannst du ja leicht mit der Standard LiquidCrystal Library und einem direkten Anschluss des Displays probieren.

Kann man in LiquidCrystal_SR2W die Taktgeschwindigkeit einstellen ?

Das ist der entscheidene Punkt! Vielen Dank für den Hinweis. Habe jetzt einmal alle Buchstaben einzeln hintereinander ausgeben lassen mit einem sehr kleinem delay dazwischen und dann funktioniert es. Ich konnte etwa bis 20 MIKROsekunden runtergehen. Also dem fehlt wirklich nur so ein ganz kleines bisschen die Zeit. Leider kann man das nicht der Lib via Variable beibringen. Ich hab grad mal in den C-Code geguckt und hab die betreffende Stelle gefunden. Ich denke, dass ich dem dort einfach ein paar Mikrosekunden mehr Zeit geben werde.

Gruß, Alex