Dot-Matrix Laufschrift



  • Hallo Pesi,


    danke fuer den Hinweis!
    Die Select-Case habe ich rausgeschmissen, den Zeichensatz vervollstaendigt und Deinen ersten Vorschlag in der Form uebernommen. Ich habe mein erstes Posting dahingehend editiert und etwas am Code noch optimiert. Einen Fehler habe bei der Gelegenheit auch entdeckt.


    Arrays gehen in Bascom nur mit 1 los. Ich habe mir das nochmal in der Hilfe angeschaut: "The maximum number of elements is 65535. The first element of an array is always one. This means that elements are 1-based."


    Aber was dort so richtig Speicher frisst ist meine folgende Variablendeklaration:


    Dim Dat(1530) As Byte


    Ein Zeichen besteht aus 6 Bytes. Bei 1530 Bytes kann ich also einen Text mit 255 Zeichen rausschieben. Diese Bytes werden dann bitweise Dat(x).0 bis Dat(x).7 in der Timer_ISR rausgeschoben.


    Mit freundlichen Gruessen
    Digitali

  • Danke für das viele Lob.


    Das Projekt ist so gut dokumentiert da die Dokumentation ein teil der Aufgabenstellung gewesen ist.
    Und zum Fleiß naja, es waren ca. 400 Arbeitsstunden wobei ich auch noch meinen Klassenkameraden bei ihren Projekten geholfen habe, und die Doku 3 mal überarbeitet worden ist. Außerdem musste das Projekt noch 2 mal präsentiert werden. Und da sind 400h nicht mehr wirklich viel.


    Und von den 1280 LEDs habe ich bei 320 die Platine verdreht.(LEDs auf der Rückseite) und ich musste die LEDs umlöten.


    Ich kann mal sehen ob sich vom DMX-Mischpult noch eine Kopie der Dokumentation besorgen lässt. Ist leider nicht von mir, also kann dan leider auch keine Garantie auf Vollständigkeit oder Richtigkeit geben.


    Und noch mal danke für den herzlichen Empfang

  • Nicht schlecht Herr Specht,


    wirklich eine sehr ordentliche Arbeit, werde ich mir noch mal genau zu Gemüte führen.


    Ups, der neue Beitrag von Digitali ist ja auch Super, den habe ich zuvor noch
    nicht gesehen, also dann beiden ein herzliches Grüß Gott aus Bayern.


    Also mein derzeitiger Stand der Laufschrift ist so wie auf dem Foto zu sehen ist.
    Die Platinen sind in einem Gehäuse, die Frontplatte ist soeben fertig geworden,
    leider fehlt mit gerade ein 40poliger Wannenstecker, ich musste alle Kabel vom
    Display verlängern und jetzt fehlen mir die Stecker, aber es läuft schon alles.


    Die Software ist fertig und läuft auch, es kann Text vom PC über RS232 in das
    Gerät geladen werden, es wird da gespeichert und solange wiedergegeben
    bis ein neuer Text eingeladen wird. Bleibt natürlich beim Ausschalten erhalten.


    Im unteren Teil eines EEPROMS ist ein 8x8 Zeichensatz drinnen, im oberen
    Teil wird der (ASCII) Text abgelegt, die Umrechnung macht natürlich der µC.
    Es sind über 100 Zeichen in dem Zeichensatz, also der komplette ASCII Zeichensatz
    klein und groß mit Zahlen und Umlauten, Klammern usw., alles drinnen.


    Wenn alles fertig ist gibt es noch mal ein Foto davon.


    Dafür, das es eigentlich nur ein kleiner Versuch werden sollte ist das doch
    ganz schön komplex geworden, entweder halt gescheit oder gar nicht.


    Da oben auch was über die Prozessoren geschrieben wurde, das ist ein kleiner
    PIC 16F84 mit 1.024 Byte Memory und 66 Registern und etwas EEPROM, der
    ist proppevoll bis unter die Haube mit Assembler Code.
    Der Zeichensatz und der Text werden in einem I2C EEPROM mit 32kB abgelegt.



    MfG Raimund

  • digitali
    Du könntest RAM Sparen, wenn du darauf verzichten würdest, darin praktisch einen Display-Graphik-Puffer abbilden zu wollen. Wenn du 'nur' Zeichen (definiert in der Zeichentabelle) ausgeben willst, dann würde dir ein Puffer von 255 Bytes (= 255 Zeichen) eigentlich reichen, denn die Graphikdaten zu den einzelnen Zeichen sind ja im Flash in den DATA-Linien gespeichert. Mittels Zeichenpuffer (255 Bytes) und der aktuellen Position könntest du die auszugebenden Graphik-Daten direkt on-the-fly in der ISR per Lookup aus der Zeichentabelle auslesen und ausgeben, ohne einen gesamten Graphik-Puffer speichern zu müssen.


    Wenn du allerdings sowieso planst, künftig auch Bilder, Banner etc. anzuzeigen, dann ist ein Graphik-Puffer sicherlich die optimale Lösung. Dann brauchst du aber auch einen AVR mit entsprechend viel RAM, wie du selbst gemerkt hast. Als Alternative wäre noch ein externer SRAM-Chip (XRAM oder einer mit SPI- oder i2c-Schittstelle) möglich.


    Gruss
    Neni

  • Wahnsinn, was sich doch hier tut!


    Rauchendesdope: Respekt: 1.280 LEDs in 400 Stunden verlöten (+ Fehler + sonstige Arbeit), also ich hätte das schon längst in's Eck geschmissen! :P


    Raimund: Du bist schon Hochgeschwindigkeitsbastler, oder? - mal so "nebenbei" ne Laufschrift zamgezimmert, aber professionell mit Alugehäuse etc., ich kann nur staunen - die Dimmerkurve hast Du "nebenbei" ja auch noch ausprobiert!


    Digitali: ich hab' mir das ganze noch mal genau durchgelesen, und jetzt (trotz Bascom-Unwissen) verstehe ich das: Du rechnest praktisch "vorab" den kompletten 255-Zeichen-Text in ne Grafik um, die Du dann im RAM hältst - und deswegen brauchst Du den großen AVR, wegen dem hohen RAM-Speicherbedarf... weil der Programm-Code ist ja echt nicht viel...


    Wie Neni schon gesagt hat, die meisten Text-Displays nehmen halt das Zeichen, und holen sich das Bitmuster dann erst bei der Ausgabe in die Schieberegister aus dem Zeichensatzspeicher - müsste eigentlich mit Bascom auch gehen, ist ja auch nix anderes, als den Zeiger irgendwohin zu setzen...


    Das mit dem "Bildschirmspeicher" (grafisch) habe ich dem Andy ja auch recht früh schon vorgeschlagen - aber der muss ja nicht größer sein als das Display, beim Andy wären das 160 Spalten und damit 160 Byte - da geht auch ein kleinerer ATMega...


    Die ISR holt sich die Bits da raus, und das Hauptprogramm schreibt den Text als Grafik (ggfs. mit Effekten etc.) in den Bildschirmspeicher.


    Könnte natürlich evtl. komische Effekte geben, wenn der Speicher erst zur Hälfte neu beschrieben ist, aber schon die nächste Zeile angezeigt wird (weil Bascom u.U. zu langsam ist) - dazu folgender "Trick":


    Es gibt einfach zwei Grafikspeicher (wären dann hier insg. 320 Byte), der eine wird angezeigt, währenddessen im anderen die neue Grafik ganz gemütlich erstellt - ist sie dann fertig, wird auf diesen Speicher zur Anzeige "umgeschaltet" (einfach Startwert des Pointers in der ISR ändern), und die nächste Grafik im anderen Speicher erstellt... usw.


    Die Idee ist nicht von mir, das hatte damals mein Sinclair QL auch, um mit seinem nur 68008 auf 8 MHz ohne GPU trotzdem flimmerfreie bewegte Grafiken erstellen zu können...

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • / OT ON / Also es gibt Vollgasdeppen das ist einfach unglaublich / OT OFF /



    Hallo Pesi,


    also ich habe jetzt gerade mal nachgeschaut, so schnell war das nun auch nicht.
    Am 2. März habe ich die ersten Platinen mit dem Spalten und dem Zeilentreiber gemacht,
    es sind also bis zu dem obigen Stand mehr als 4 Wochen vergangen, das ist höchsten mittelschnell ?


    Außerdem ist es ja noch nicht ganz fertig, bis jetzt steuert das ja noch meine Testplatine an.
    Bis da der Prozessor mit Zubehör für RS232, das EEPROM und die Stromversorgung
    drinnen und dran sind dauert es schon noch etwas, da mir noch einige Teile fehlen.


    Übrigens geht die Steuerelektronik auch für die RGB 8X8 Matrix, die hat eine gemeinsame
    Anode, das ist eine echte Herausforderung die vernünftig anzusteuern.
    Aber dieses Projekt habe ich jetzt mal auf die Seite gelegt, das ist sehr Zeitintensiv.
    Auch werde ich dafür dann einen größeren µC verwenden, damit ich für das Schieben
    die benötigten Register habe, ist jetzt zu knapp für bessere (aufwändigere) Anzeigen.


    MfG Raimund

  • <OT ON>


    Naja, ich finde das schon recht schnell - wenn ich bedenke, wie lange nun schon mein DMX-Dimmer, die LED-Moonflower und der Wasserhahn auf Eis liegen :wink:


    <OT OFF>


    machst Du dann die RGB-Matrix mit 7 Farben (also R, G, B jeweils an oder aus) oder mit mehr Farben (PWM)...?


    ersteres dürfte doch (sag' ich jetzt mal ganz unbedarft) nicht grundlegend anders sein als das Monochrom-Display, ist halt einfach die dreifache Anzahl an Schieberegistern...?

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • sorry, dass ich mich so lange nicht mehr gemeldet habe.
    bin die letzte Woche krank im Bett gelegen, nur am Freitag in die Schule gegangen und hatte irgendwie nicht die Motivation mich vor den PC zu setzen.


    Pepsi: Ich habe den Lehrer der für das DMX-Mischpult Projekt betreut hat gefragt wegen den Unterlagen gefragt. Er hat diese nicht zur Hand gehabt aber im Laufe diese Woche kann ich sie sicher besorgen. Vielleicht finde ich auch noch ein paar Dokus zu anderen LED-Projekten

  • Servus,


    nun es ist endlich vollbracht, der fehlende Stecker ist gekommen und ich habe die ganze
    Elektronik mit dem Prozessor auch noch in dem kleinen Gehäuse untergebracht.
    Am Ende war der Platz gar wenig, mit dem ganzen Kabelgedöns, aber es hat noch geklappt.


    Ein paar Details noch zu dem Projekt soweit oben nicht schon irgendwo erwähnt:
    Die Laufschrift kommt von rechts aus dem nichts reingeschoben und geht links raus, einige LS
    setzen den ersten Buchstaben direkt auf das Display, ist zwar einfacher aber nicht schön.


    Wenn beim einschalten der gelbe Taster gedrückt wird befindet sich das Gerät im Speichermodus,
    dann kann ASCII Text über die RS232 Schnittstelle eingelesen und gespeichert werden.
    Der Text wird direkt in einem I2C EEPROM abgelegt, es sind über 30.000 Zeichen möglich,
    was aber bestimmt nie gebraucht wird.


    Auf eine Einstellbarkeit der Geschwindigkeit habe ich jetzt verzichtet, es hat sich bei Versuchen
    gezeigt das es eigentlich nur einen relativ engen Bereich gibt, in dem die Laufschrift sauber läuft,
    gleichzeitig gut lesbar ist und auch noch hell genug ist. Daher wurde dieser Wert einfach vorgegeben.


    Es wurde im Prinzip der von Pesi Skizzierte Schaltplan verwendet, elektrisch gesehen wurden die Displays
    als 5 Stück 8x8 Matrix zusammen geschalten. Es wird immer eine komplette Zeile mit 40 Bit eingeclockt
    und dann ausgegeben, die Zeile bleibt nun ca. 4ms stehen und dann kommt die nächste Zeile dran.


    Für einen 4MHz Prozessor mit nur 13 IO Pins ist das schon ziemlich das Maximum, eine größere
    Laufschrift nach dem selben Prinzip mit dem gleichen µC aufgebaut würde schon stark ruckeln.
    Da sind dann einfach 10 oder 20 MHz gefragt, währe jetzt auch nicht das große Problem.


    Anliegend noch zwei Bilder von dem fertigen Gerät, Das Display bekommt irgendwann noch einmal
    einen Rahmen, entweder Holz oder Alu. Je nachdem wo das dann mal montiert wird.


    MfG Raimund

  • Raimund, das ist doch echt super geworden! - ich finde es immer noch eine gute Idee, die Module einfach zamzukleben und frei zu verdrahten, kompakter kann man das nicht bauen, wenn die Steuerung eh' extern ist...


    Zitat von "RH"

    Am Ende war der Platz gar wenig, mit dem ganzen Kabelgedöns, aber es hat noch geklappt.


    Das kann ich mir denken - wundert mich eh', wie Du das da überhaupt noch reingebracht hast?!?


    Zitat von "RH"

    Die Laufschrift kommt von rechts aus dem nichts reingeschoben und geht links raus, einige LS
    setzen den ersten Buchstaben direkt auf das Display, ist zwar einfacher aber nicht schön.


    Wie machst Du das? - einfach die nicht benötigten Spalten in's "Nirvana" schieben, oder? - also ich denk' mir das so: die selbe SW wie bei der "Buchstabe erscheint"-Methode, aber in Deinem Fall dann einfach 48 Bit einclocken, die rechten 8 "fallen" hinten wieder "raus"... also eigentlich die selbe Methode, nur dass man den ganz rechten ("plötzlich erscheinenden") Buchstaben nicht sieht, weil er ja "in Hardware" nicht vorhanden ist...?

    It's only light - but we like it!


    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!

  • Auch von mir einen dicken =D>
    Damit ist ja das Anliegen, das sowas endlich mal fertig gebaut wird, eigentlich erledigt :D . Ich hoffen, ich komme aber auch noch dazu meine Laufschrift zu Ende zu bauen.

  • RH




    Bin schwerst beeindruckt. 8o Stellst du dein Material auch mal zum Nachbau zur Verfügung?


    Du erwähntest auch die Möglcihkeit das ganze mit RGB-LEd´s zu realisieren - das wäre eine geile Sache. So nach dem Motto Littfasssäule mit drehenden LED´s.

  • HI!
    RH


    SIeht echt gut aus... Und dann noch per PC steuern...


    Wie langehaste denn dafür so gebraucht um es komplett zu realiseren?



    Ich würd mal gerne wisse obs dazu.. also generell zu Laufschriften so erklärungen gibt wie man das denn realisiert.. Also mit der Schieberegistern und so...


    Würde mich mal gerne weiterbilden... Und wollte halt fragen ob hier jemand ein gutes "Tutorial" kennt..?!


    Vielen Dank schonmal


    Gruß kamatschka

  • Ich bin auch noch auf der Suche, speziell zu dem Thema Matrix und RGB. Mir macht das parallele Ansprechen der drei Farben noch Kopfzerbrechen.


    Entweder schiebste die halt parallel rein - also über mehrere Ports oder eben über einen Multiplexer-Baustein, bzw. drei davon...
    Die kleinen Brüder vom TLC5940 z.b. machen sowas ganz gut - inkl. regelbarer KSQ usw...


  • Entweder schiebste die halt parallel rein - also über mehrere Ports oder eben über einen Multiplexer-Baustein, bzw. drei davon...
    Die kleinen Brüder vom TLC5940 z.b. machen sowas ganz gut - inkl. regelbarer KSQ usw...


    Genau das ist glaube ich noch mein Verständnisproblem, was Schieberegister und so Zeug angeht,
    habe ich noch null Ahnung. Warscheinlich hab ich auch deshalb nicht verstanden wieso alle einem
    erzählen das BML (die Blinkenlights Markup Language) so einfach zu adaptieren ist... :P