Hallo Leute,
2008 hatte ich zum Fest aus kleinen Glühlampen+Diode eine 8x8 Matrix im
Fenster und habe "Frohe Weihnachten" als Laufschrift durchlaufen lassen.
Hatte ich mitm Bitmap-tool für LCDs erstellt, waren 8x76 Pixel und dort
über "Text einfügen" als Byte Array abgespeichert.
Sah tatsächlich ganz nett aus, wenn man denn den Kopf gehoben und
hingesehen hat.
Die SW war recht simpel,
ich hatte einfach per Schleife "8 mal LPM" die Sache aus dem Flash
geholt und dargestellt, in R0 stand eine Spalte. Ein zweiter Zähler hat
dann die Startadresse hochgezählt, um den Laufschrifteffekt zu
erziehlen.
Dieses Jahr habe ich vor, die Sache zu erweitern (9 Tage noch Zeit,
hihi).
Die Zeilen sind jetzt über 7442 + NFET gemultiplext (zeile0==oben,
zeile9==unten) und die Spalten werden nun als 2x8Bit parallel (von oben
quasi) angesteuert.
Holzrahmen, LEDs, Platine, Treiber usw. ist alles fertig.
Blöd ist, das die Architektur jetzt genau andersrum ist, also quer
sozusagen. Wenn ich die gleiche Softwarestruktur verwenden würde und auf
die rechte Hälfte meiner Matrix verzichte, liefe die Schrift senkrecht
und ist 90° gedreht.
Zwei Byte sind jetzt meine oberste Zeile im "Bild" und nicht mehr die
zwei ersten linken Spalten.
Ich weiss im Moment wirklich nicht, wie mir einen vitruellen
Screenbuffer odersowas hinbasteln soll, um die Informationen wieder
spiegel-und rotationsrichitg darstellen zu können. Evtl. kann mir nen
Tipp geben, danke.
Axelr .- .-.
hab nochn verwackeltes Bild auf meinem Handy gefunden :)
edit: ...wie ich mir...
\/
>Ich weiss im Moment wirklich nicht, wie mir einen vitruellen>Screenbuffer odersowas hinbasteln soll, um die Informationen wieder>spiegel-und rotationsrichitg darstellen zu können. Evtl. kann mir nen>Tipp geben, danke.
ich komme nochmals auf euch drauf zu:
Eigentlich ist es zu spät, sich dieses Jhr nochmals darum zu kümmern,
das Display nun doch quer am Balkon zu besfestigen, wenn die Software -
bedingt durch die Einfachheit dieser - die Schrift nur hochkant
darstellen kann.
ich habe mir nun ein kleines Bitmap erstellt."Frohe Weihnachten" Also
ein breiter Buchstabe und versuche nun, diesen durch mein Anzeigefenster
zu schieben. An der Schaltung hat sich nichts geändert, PORTA und PORTC
stellen die linke und rechte Hälfte des Dispalys dar. PORTD hat den
Zeilendecoder (7442) und taktet die Zeilen von oben nach unten.
Ich habe jetzt nochmal von vorne begonnen und mit WINAVR ein wenig herum
gespielt.
ich habe mir 20x8Byte Schattenspeicher eingerichtet und wollte per
"pgm_read_byte" die Daten aus dem Flash reintakten. ich bin zu blöd,
Leute.
Die eigentlich Routine steht und ich wäre in der Lage ein Standbild
anzeigen zu lassen. Aber wenn ich dann "rechts" rüberrücke im Flash,
läuft mein Bild nicht, sondern springt um ganze Buchstaben. Ich muss das
irghentwie schieben, rollen sonsterwie ...
Habe ich auch probiert, komme abewr nicht zurecht.
Evtl. hat jemand Lust, sich mal den Quelltext im Anhang anzusehen. Dann
kan ich das heute abend noch quer am Balkon aufhängen.
Danke
Axelr.
Ich weiss, das es 10 minuten vor der Angst ist, aber ich lag die letzte
Woche im Bett |:)
im Archiv gefunden...
Wie gesagt: Display senkrecht aufgehangen und direkt mit "pgm_read_byte"
und einem linearen Zähler auf die Ports gegeben.
Waagerecht betrieben bekomm ich das nicht hin - hmm.
jetzt gehts halbwegs :|
ich hatte aus einer Grafik-LCD Routine in Erinnerung, wie man das
reinschieben muss ;)
einen Teil vom aktuellen Byte und einen Teil des nächsten...
Ganz hundertprozentig funktioniert das trotzdem noch nicht. Immer dann,
wenn mit Null geschoben wird, steht die Anzeige scheinbar für einen
Moment, aktualisiert sich trotzdem. Ich werde das noch mal genauer
untersuchen. Es entstehen dann alasing-Effekte, die sich besonders dann
bemerkbar machen, wenn Pixel dicht beieinander liegen.
Ich habe das Display mal eben ins Fenster gestellt und mache nochmal ein
(kurzes) Video. Bis gleich ;))
1
int main(void)
2
{
3
PORTD= 10; // zeilendecoder 74LS42 auf Bereich ausserhalb gültiger Zeilenummer (LEDs dunkeltasten)
ok, kann man nicht wirklich - egal ich beende mal meinen Monolog noch :)
Ich habe schon versucht, den Schattenspeicher vor jedem Bildaufbau im
Interrupt in eine andere Variable um zu kopieren, weil ich denke, das
hier evtl. Probleme auftreten, wenn der eine gerade den Speicherbereich
beschreibt und die Anzeige eben diseen aktualisieren will.
Allen noch ein paar ruhige Feiertage.
Bis dann
Axelr.
Achso(edit). Wer Lust hat, kann gern Hinweise geben, wie man das
Richtig(er) machen könnte, Danke
Obgleich sich das Interesse und die Anteilnahme in Grenzen hält, schicke
ich noch eine geschnittene Endgültige Version ins Rennen.
Frohes neues Jahr denn ...
Axelr.
ich habe meinen eigenen Quelltext wiedergefunden, juhuu
:)
EDIT_
(4 oder 16) Graustufen werde ich jetzt mit aufnehmen und dann:
lese ich meinen USB-Maussensor aus und stelle ein Teelicht davor.
DAS sieht bestimmt gut aus...