Moin,
ich habe das Display "LCD-Modul SAMSUNG UC121902-TNARX-A" und versuche
es jetzt an meinen arduino Leonardo zum laufen zu bringe, aber ich
bekomme die Programmierung irgendwie nicht hin.
Danke im Voraus
Eike
Ja, das ist schön klein und ich habe es. Und das Datenblatt hilft mir
nicht wirklich bei der Programmierung, ich weiß nur, dass ich irgendwie
56bits an den dataPin senden muss, nur wie?
Dann wird dir nix anderes übrig bleiben, als zu versuchen das Datenblatt
zu verstehen, notfalls durch ausprobieren.
Es geht damit los, dass Display richtig nach Schaltplan anzuschließen
und sicherzustellen, das du das Timing einhältst. Dann spiel mit den
Bits rum und schaue was passiert.
Nun, wenn "es nicht klappt", dann hast Du ja schon eigenen Code
geschrieben. Vielleicht enthält der ja nur einen Fehler?
Oder ... sollte es sein können, daß Du das etwa noch nicht gemacht hast?
Doch doch, saß ich schon Stunden dran... hier das vielversprechende
Code:
const int clockPin = 3; // toggeln während der Datenübertragung
const int latchPin = 4; // vor dem Senden der Daten an den IC auf LOW
ziehen, danach wieder HIGH
const int dataPin = 2; // an den seriellen Eingang des IC; jeweils 1
Byte übertragen
void setup() {
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop() {
digitalWrite(latchPin, LOW);
// Datenübertragung: das Byte wird von rechts 2^0 nach links 2^7
codiert (least significant bit first)
shiftOut(dataPin, clockPin, MSBFIRST,00000000);
shiftOut(dataPin, clockPin, MSBFIRST,00000000);
shiftOut(dataPin, clockPin, MSBFIRST,00000000);
shiftOut(dataPin, clockPin, MSBFIRST,00001000);
shiftOut(dataPin, clockPin, MSBFIRST,00000000);
shiftOut(dataPin, clockPin, MSBFIRST,00000000);
shiftOut(dataPin, clockPin, MSBFIRST,00000010);
digitalWrite(latchPin, HIGH);
}
Eike schrieb:> shiftOut(dataPin, clockPin, MSBFIRST,00000000);> shiftOut(dataPin, clockPin, MSBFIRST,00000000);> shiftOut(dataPin, clockPin, MSBFIRST,00000000);> shiftOut(dataPin, clockPin, MSBFIRST,00001000);> shiftOut(dataPin, clockPin, MSBFIRST,00000000);> shiftOut(dataPin, clockPin, MSBFIRST,00000000);> shiftOut(dataPin, clockPin, MSBFIRST,00000010);
Da Arduinos in C++ programmiert werden, werden hier andere Werte
übertragen als Du annimmst.
Sieh Dir deine jeweils letzten Parameter beim Funktionsaufruf von
shiftOut noch mal genau an.
Wenn ich die Angaben von Pollin richtig interpretiere, hat das Display
mehr als 53 Segmente.
12 x 7 Segmente = 84 Segmente
Hinzu kommen noch diverse Symbole in der oberen Hälfte des Displays.
Der Controller kann mit 1/1 Duty (welches du verwenden willst) aber nur
53 Segmente bedienen. Du musst dich also zumindest mit der Thematik 1/2
Duty auseinandersetzen.
Magnus M. schrieb:> Der Controller kann mit 1/1 Duty (welches du verwenden willst) aber nur> 53 Segmente bedienen. Du musst dich also zumindest mit der Thematik 1/2> Duty auseinandersetzen.
Nachtrag: Anhang
Eike schrieb:> Was muss ich den sonst schreiben???
Den_n_, mit zwei 'n'.
Na, was ist das hier für ein Wert? Welches Zahlensystem soll der
haben?
> shiftOut(dataPin, clockPin, MSBFIRST,00001000);
Und welches hat er? Hast Du Dich wenigstens drei Minuten lang damit
auseinandergesetzt, wie in der von Dir verwendeten Programmiersprache
numerische Konstanten geschrieben werden?
Was ist im Arduino-C++-Dialekt 00001000 für ein Wert?
Wieviele Bits sind das?
Genau: 24 Bit.
Verstehst Du nicht?