Hallo zusammen,
ich versuche mich daran, die LED Laufschrift Mc Crypt 590998 per
Processing (simple, auf Java basierende Sprache) direkt anzusteuern:
http://www.conrad.de/ce/de/product/590998/LED-LAUFSCHRIFT-ROT
Das Ansteuern und Einspielen von Text funktioniert schon wunderbar. Die
Laufschrift kann aber auch Grafiken ausgeben. Im beiliegenden Data Sheet
wird der Aufbau von Grafiken beschrieben (Seite 13-14). Leider komme ich
mit der Beschreibung überhaupt nicht zurecht.
Ich bin für jeden Tipp dankbar, in welcher Form ich Grafiken
programmieren muss, um diese auf der Laufschrift anzeigen zu können!
der daani schrieb:> Laufschrift kann aber auch Grafiken ausgeben. Im beiliegenden Data Sheet> wird der Aufbau von Grafiken beschrieben (Seite 13-14). Leider komme ich> mit der Beschreibung überhaupt nicht zurecht.
Welchen Teil hast du den verstanden?
Eigentlich ist das doch ziemlich einfach aufgebaut. MIt dem Verständnis,
wie sich Bits zu Bytes zusammensetzen und der Info aus dem Datenblatt,
welches Bit jetzt mit welchem Pixel (und dessen Farbe) korrespondiert,
ist das nicht weiter kompliziert.
Die typische Herangehensweise ist es, einmal Muster darstellen zu
wollen, die man einfach wiedererkennen kann. Beispielsweise $f0 oder
$33-Bytes, welche unterschiedlich breite Streifen ergeben. Und dann
einfach ausprobieren. Echo hat die Möglichkeit, dass Du auch Binärdaten
ausgibst. Probier einfach so lange bis Du das verstanden hast.
Hallo Karl Heinz, danke für die prompte Antwort!
Soweit ich es verstehe, ist die gesamte Laufschrift in Blöcke von
jeweils 8x8 Pixeln aufgeteilt (aufgrund der Breite der Laufschrift in
meinem Fall nicht 4 Blöcke, sondern 10).
Danach wird es aber ziemlich dunkel. Die Pixel sind nach dem Schema D0
bis D255 benannt, wobei 4 Pixel in einem Byte repräsentiert werden.
Einerseits verstehe ich das nicht so recht und andererseits weiß ich
damentsprechend natürlich nicht, wie ich das in Code umsetzen soll.
Vielleicht hilft es, mein Grundlagenverständnis hier kurz abzugleichen:
Ein Bit kann 0 oder 1 sein. Ein Byte besteht aus 8 Bits. Im Data Sheet
wird allerdings von 4 Bit pro Byte gesprochen!?
Bitte entschuldige, falls das dumme Fragen sind. Ich habe erst vor
einigen Tagen damit begonnen, mich mit dem Thema Mikrocontroller
auseinanderzusetzen (aber schon wahnsinnig Spaß daran gefunden!).
(Ahh ich glaube ich verstehe das Problem. Da es schwierig ist beliebige
Bytes über eine serielle Schnittstelle zu übertragen beschränken die
sich anscheinend auf druckbare Zeichen aus ASCII, die gehen immer.
Entweder die Übertragen das Bitmuster Hexadezimal, oder die werten
einfach nur die 4 untersten Bits aus.)
Mist, DX sind wirklich Pixel. Andreas hat Recht.
der daani schrieb:> Hallo Karl Heinz, danke für die prompte Antwort!>> Soweit ich es verstehe, ist die gesamte Laufschrift in Blöcke von> jeweils 8x8 Pixeln aufgeteilt (aufgrund der Breite der Laufschrift in> meinem Fall nicht 4 Blöcke, sondern 10).
Davon kann ich im Datenblatt nichts sehen.
Das Datenblatt sagt, dass es Graphic-Blöcke gibt, von denen jeder 32*8
Pixel gross ist, organisiert in 8*8 Einheiten.
Ein Graphic-Block ist wohl eher sowas wie ein Gestaltungselement und
umfasst keineswegs den kompletten 'Bildschirm'
> Danach wird es aber ziemlich dunkel. Die Pixel sind nach dem Schema D0> bis D255 benannt
D steht einfach für Daten
> Einerseits verstehe ich das nicht so recht und andererseits weiß ich> damentsprechend natürlich nicht, wie ich das in Code umsetzen soll.
Schau dir die Zeichnung an
Da ist ganz klar durchnummeriert, wie die einzelnen Dxx sich auf die
Pixel aufteilen. Wenn jetzt noch dazukommt, dass jedes Dxx aus 2 Bit
besteht (wegen der Farbe), dann ist doch ganz klar, wie sich eine
Abfolge von Bytes auf die Pixel aufteilt.
In Code setzt du das erst mal gar nicht um, sondern man fängt damit an,
dass man sich auf karriertem Papier ein entsprechendes Raster
aufzeichnet und dort markiert, welche LED in welcher Farbe leuchten
soll. Und dann geht man, so wie in der Zeichnung gezeigt, die einzelnen
Kästchen durch und fügt die Bits entsprechend ihrer Farbe aneinander.
Noch in 8 Bit Blöcke (wegen der Bytes) aufteilen und schon hat man die
Hex-Codes der 64 Bytes, die nach dem Block-Kommando gesendet werden
müssen und so einen Graphic Block definieren.
Und dann programmiert man das, dass genau diese Hex-Codes gesendet
werden.
So wie ich das verstehe, ist damit der Block aber nur definiert.
Spannender ist jetzt die Frage, wie man ihn zur Anzeige bringt. Dazu ist
ja ein Beispiel im Datenblatt angegeben.
Christian Berger schrieb:> (Ahh ich glaube ich verstehe das Problem. Da es schwierig ist beliebige> Bytes über eine serielle Schnittstelle zu übertragen beschränken die> sich anscheinend auf druckbare Zeichen aus ASCII, die gehen immer.
Woraus schliesst du das?
> Entweder die Übertragen das Bitmuster Hexadezimal, oder die werten> einfach nur die 4 untersten Bits aus.)
Auch das nicht.
Jedes Pixel kann 4 Farben haben. Daher 2 Bit pro Pixel. Daher passen in
1 Byte 4 Pixel hinein. Und die sind einfach zeilenweise hintereinander
gestellt, so wie in der Zeichnung gezeigt. Die ersten 2 Byte sind die 8
Pixel in der ersten Zeile, die nächsten 2 Byte die 8 Pixel in der
nächsten Zeile usw. Bis man in der 8. Zeile angelangt ist, dann geht das
Spiel mit den nächsten 8 Pixelspalten wieder von vorne los. 4-mal
insgesamt.
Karl Heinz Buchegger schrieb:> Woraus schliesst du das?
Das war ein Irrtum.
Inzwischen habe ich den Text auf Seite 14 gesehen, in dem Dx als Pixel
definiert ist, nicht als Datenbit.
Das habe ich aber eigentlich korrigiert und den Text in Klammern
gesetzt, und unten korrigiert.
Hallo Andreas, Christian und Karl Heinz,
erstmal vielen Dank für die schnellen und geduldigen Antworten für einen
überforderten Anfänger!
Wenn ein Graphic Block aus 8x8 Pixeln aufgebaut ist (das Bild mit dem
"Gestaltungselement hat mir sehr geholfen), entspricht dann ein Pixel
einer LED im Laufband?
Bezüglich der Farbe: Mein Laufband "kann" nur rot. Stelle ich dann eine
leuchtende LED mit 10 10 10 10 dar?
Danke für den Tipp bezüglich des Vorgehens. Um die Funktionsweise zu
verstehen würde ich zunächst gerne ein ganz einfaches Muster
(abwechselnd eine LED an - eine aus) realisieren.
Ich habe zwischenzeitlich - abgesehen vom Versuch, mit Hilfe Eurer
Antworten den prinzipiellen Aufbau zu verstehen - einen weiteren Versuch
gemacht: mit der Laufschrift kam das Editor-Programm "NewSign 03127 or
03128". Per USB Port Monitor habe ich die Kommunikation zwischen dem
Tool und der Laufschrift mitgeloggt.
Bei der Übertragung an die Laufschrift finden sich an der Stelle, an der
die Informationen bezüglich Grafik auftachen sollten, diese
Informationen: