Matrix 5x8 mit Effekten

  • Gleich vorab, zur generellen Info: Ich bin kein Hersteller, man kann das also nicht bei mir fertig aufgebaut kaufen. Ebensowenig wie als Bausatz, ich ätze auch keine Platinen für andere. Das Ganze ist ein Hobby von mir, ich stelle hier aus reiner Freundlichkeit die komplette Doku zum nachbauen rein, kann aber keinerlei praktische Hilfe anbieten - ebensowenig wie irgendwie in irgendeiner Weise Verantwortung übernehmen, falls bei jemandem der Nachbau nicht klappen oder gar irgendwelche Schäden auftreten sollten!


    EDIT 29.12.2009: es gibt nun hier einen FAQ-Thread zu diesem Teil im allgemeinen Forum - für Fragen, Anregungen, Hinweise etc., da kann jeder posten, auch nicht-Lobby-Mitglieder - aber bitte nur sinnvolles! Bitte ggfs. diesen Thread benutzen, nicht noch mal einen neuen aufmachen! Danke!


    So, jetzt mal wieder eine Bastelanleitung, da ich mir schon viel Arbeit dafür gemacht habe (Fotos, tippen etc.) und heute Abend nix vor, stelle ich die trotz Irrsinns-Jackpot mal rein.... Wobei sich der Spam gerade lobenswerter Weise in Grenzen hält, die Betreffenden sind wohl schon (Samstagabend) im JuZ oder beim Saufen an der Bushaltestelle :D (so viel Spaß muss sein!)


    Es geht um eine kleine Matrix 5x8 (Hochformat, kann man natürlich auch als 8x5 benutzen, muss man halt seine Grafiken dementsprechend gestalten), die Bilder abspielt, mit Effekten dazu (pulsieren, Dimmer). Zum Aufwärmen hier erst mal ein Video:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Dass da LEDs z.T. "nachhängen" kommt wieder von der Spitzen-YT-Kompression, in echt ist das nicht so!


    Die Idee zu diesem Tanzmännchen stammt aus diesem Thread - vielen Dank noch mal an den Denim! Auch für den supergenialen Matrix-Editor, der hat mir hier sehr geholfen. Schade, dass Du nicht mehr im Forum bist! - naja, da war auch grad so ne Noob-Welle, kann ich schon verstehen, dass man da gleich vergrätzt wird....


    Die Matrix selbst besteht aus PLCC-4-LEDs, die es mal günstig bei Ebay gab - das schöne an diesen ist die Pinbelegung, damit lässt sich auf einer einseitigen Platine leicht eine Matrix aufbauen. Die sind von Osram, k.A. ob's die in der Art auch von anderen Herstellern gibt - Hiergibt's die z.B. auch, aber kosten ein vielfaches - ich sage jetzt nicht, was ich bezahlt habe! 8o :D - müsst Ihr mal googeln.....


    Hier mal ein Foto von dem Ding, passt genau auf so ein kleines Plastikgehäuse mit Elektronik und Batterie drin:



    So sieht das Layout aus, ich hoffe, das ist verständlich, kommen ja nur LEDs drauf:



    Links der Anschluss zur Steuerplatine (siehe übernächster Beitrag), das Prinzip wie immer: Pfostenbuchse auf ein 16-Pol-Flachbandkabel pressen, die nicht benötigten Adern abzwicken, und die restlichen der Reihe nach anlöten, dann passt die Verkabelung automatisch.


    Hier noch das Layout einzeln und im Nutzen:

  • Da ich ja ein ausgemachter Freund des Drahtverhaus bin, gibt es die Matrix auch in einer Version aus direkt mit den Anschlussdrähten verlöteten 5-mm-LEDs. Diese sind ja auch leichter/billiger zu bekommen, wer den aktuellen Jackpot abstaubt, kann gleich 35 Matrixen damit bauen! 8o


    So sieht das Ganze aus:



    und hier wieder ein Video davon:


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Das schöne daran: das Teil ist echt filigran, die leuchtenden Punkte "schweben" in der Luft, die ausgeschaltete Matrix sieht man fast nicht - habe daher auch schon mal aus Versehen ne Decke drüber geworfen, da war das Ding natürlich arg verbogen - hat sich aber beheben lassen, war ja gut gelötet ;)


    Zum Aufbau habe ich wieder Löcher in ein Brett gebohrt, da die LEDs rein gesteckt, und die Beinchen entsprechend gebogen und verlötet:



    die müssen halt in zwei Ebenen sein (Zeilen und Spalten), damit's keinen Kurzen gibt - die Zeilen selbst werden dann mit Cu-Lackdraht auf die Basisplatine verdrahtet:



    Hier wieder das Layout dazu, Anschluß wie oben (Pfostenstecker + Flachbandkabel):



    Und anbei noch das PDF zum runterladen, mal nur als Nutzen, dann sind's schon 5 Dateianhänge.... wer nur eine braucht, kann sie ja abschneiden....

    Dateien

    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!

    Einmal editiert, zuletzt von Pesi ()

  • Gesteuert wird die Matrix von meiner "Universal-Steuerplatine", die auch schon beim Cube zum Einsatz kam - die wurde aber vor ein paar Monaten noch mal geändert, Widerstände, Transistoren und Kondis sind nun in SMD, da ich zu faul zum Bohren bin ;) - hier mal das Layout mit Bestückungsplan:



    Da sieht man auch gleich, was man alles an Bauteilen braucht (es sind nur die eingezeichnet, die bestückt werden müssen, die Platine lässt sich ja auch noch für andere Sachen verwenden....) - die grünen Teile sind auf der Kupfer-Seite, die roten "oben" - Achtung: die Ansicht ist gespiegelt, die ist von der B-Seite aus gesehen!


    Für die Anfänger: die Transistoren sind BC817, "391" bedeutet 390 Ohm, "222" ist 2,2 Kiloohm, "103" demnach 10 Kiloohm.... dann noch 2 Stück 100-nF-1206-Kondis, ein 7805, ein Elko 100 µF, eine Wannensteckerleiste 16-polig, und natürlich der Tiny2313...


    Wie schon mal gesagt: hat man 5 V zur Verfügung (oder auch 4,5 etc.), dann kann man sich den 7805 auch sparen... mit 3 Volt geht das Ganze auch noch, dazu die Vorwiderstände evtl. von 390 Ohm auf 180 Ohm verkleinern...


    So sieht das dann aufgebaut aus (deutlich aufgeräumter als der Vorgänger):



    Wem SMD zu fummlig ist, der kann natürlich auch die alte Steuer-Platine nehmen, die ist Pin-kompatibel...


    Es sind nun nicht mehr alle Ports auf der Stiftleiste (die zwei PortA fehlen, wurden eh' nie für irgendwas benutzt), dafür aber der Reset auch noch, man kann diese Leiste also auch gleich als ISP benutzen, einfach ein Flachbandkabel auf nem Stecker, Belegung wie folgt, GND geht extra über einen Lötnagel + Stecker:



    Die entsprechenden Adern einfach an einen Programmieradapter Euerer Wahl.... (Bei mir Parallelport-Kabel) - Es sind ausserdem insg. 6 Transistoren vorgesehen, man könnte das Teil also auch für nen 3er-Duo-Cube verwenden... ;)


    Hier noch die Pinbelegung der Stiftleiste, und die Entsprechung der Matrix-Zeilen und Spalten in den Port-Registern:



    Und anbei das Ganze noch als Nutzen auf ner Europlatine....

    Dateien

    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!

    Einmal editiert, zuletzt von Pesi ()

  • Nun das wichtigste: Die Software für die Matrix - diese ist in Assembler geschrieben, jedoch auch für Anfänger geeignet, da Ihr daran ja nichts machen müsst (also an der Steuer-SW selbst).


    Das einzige, was man als Anwender machen "muss" (das ist ja kein Zwang, macht ja Spaß), ist die Animationen zu erstellen, also nach vorgegebenem Muster Zahlen eintippen ;) - evtl. erbarmt sich ja jemand mal und schreibt einen Editor für den PC (so in der Art wie bei dem Cube) und stellt ihn hier rein - so würde ich mir so ein Forum wünschen, dass da auch ein Austausch stattfindet...


    Unten anbei mal die SW als AVR-Studio-(gibt's bei Atmel.com)-Projekt, das kann man öffnen, dann stimmen schon alle Einstellungen. Bearbeiten (für eigene Animationen) müsst Ihr nur die "Beispiel.inc" - die Steuer-SW selbst belegt nur 324 Byte im Tiny, da ist also schon noch Platz....


    Nicht durch den Namen irritieren lassen, die SW wurde ursprünglich für so eine Säule nach der Idee von Raimund entwickelt (die bei mir "Schneeflocke" heisst), geht aber für die Matrix genauso, weil elektrisch gesehen ist die Säule auch ne 5x8-Matrix...


    Die .hex-Datei könnt Ihr dann gleich draufflashen (das ist die Beispielanimation) um mal zu sehen, was die Daten so bewirken, und ob die Matrix elektrisch OK ist...


    Ansonsten nach Bearbeitung der Animationsdatei einfach F7 drücken ("Build") und die entstandene .hex-Datei mit Euren eigenen Animationen auf den Tiny schreiben (Ponyprog o.ä.).


    Da es hier schon Probleme gab (Danke an Fightclub für's helfende Einspringen) noch mal der Hinweis: damit das korrekt läuft, muss der Tiny auf 8 MHz eingestellt werden (egal ob Ihr ne eigene Animation erstellt, oder nur für die Testdatei) - hier die entsprechende Einstellung der Fusebits in PonyProg:



    Für andere Programme bitte anhand dessen selbst rausklamüsern, wie Ihr das einstellen müsst...


    Zu beachten: Immer zuerst die Fusebits *lesen*, dann ändern (bei einem neuen Tiny muss eigentlich nur der CKDIV8 weggeklickt werden), und *dann erst* schreiben - ansonsten kann es sein, dass der Tiny unbrauchbar wird! - das kann ebenso passieren, wenn Ihr noch irgendwas anderes falsch anklickt, also hier bitte aufpassen!


    Das Prinzip der Animationsdatei ist "dreistufig", und zwar wie folgt (in der Beispiel.inc von unten nach oben, evtl. diese dazu ansehen zum Verständnis):


    1. Bilder
    Es sind Bilder im Flash gespeichert, max. sind 256 verschiedene möglich - ein Bild besteht aus 5 Byte - die Bytes sind dabei die Spalten von links nach rechts, die Bits in den Bytes sind die Zeilen, dabei ist das MSB (Bit 7) unten - 5 Bytes untereinander kann man sich also wie die Matrix um 90° nach links gedreht vorstellen (man kann seine Bilder natürlich auch so machen, muss ja nicht Hochformat sein).


    Diese 5 Byte hintereinander im Speicher:


    Code
    00100000
    01000000
    11111111
    01000000
    00100000


    wäre also ein Pfeil, der nach links zeigt (Matrix im Querformat) bzw. nach oben (Matrix im Hochformat).


    Natürlich muss man das so reinschreiben, dass der Assembler das versteht - und ausserdem will er immer eine gerade Anzahl Bytes in einer Zeile, man kann also leider nicht einfach eine Zeile Zahlen pro Bild machen - ich habe daher immer 2 Bilder zusammengefasst, hier ein Beispiel:


    Code
    .db 0b00000000, 0b00000000, 0b00000000, 0b00000000				; 000 - LEER
    .db 0b00000000, 0b11111111, 0b11111111, 0b11111111, 0b11111111, 0b11111111	; 001 - Full On


    Im ersten Beitrag ist auch ein Thread verlinkt, in dem ein Matrixeditor zu finden ist (bitte selbst danach suchen!), den kann man auch verwenden, den Text den der ausgibt muss man dann so bearbeiten, dass er in obiges Schema passt.


    Wichtig: jedes Bild muss nur einmal abgelegt werden - auch wenn in einer Animation z.B. 5x ein Kreuz vorkommt, muss dieses Kreuz nicht 5x im Speicher abgelegt werden, sondern nur einmal - das ist eine speichersparende Verbesserung gegenüber der ganz simplen Cube-SW, bei der stur Bilder nacheinander abgespielt werden.


    2. Animationen
    Diese Bilder werden nun zu Animationen zusammengefügt. Pro Bild/Frame ein Steuerbyte und die Bildnummer - Schema wie folgt (Beispiel):


    Code
    .db 0b11100001, 1	; Full On Up langsam


    Funktioniert so: zuerst kommt ein Steuerbyte, dann die Nummer des Bildes - soll z.B. das erste Bild der Animation ein Kreuz sein, und dieses Kreuz hat die Nummer 2 (wäre dann das 3. Bild im Speicher, das erste Bild hat "computertypisch" die Nummer 0), also ".db -Steuerbyte-, 2"


    Das Steuerbyte ist so aufgebaut:


    yyyyyxxx


    Die grünen Bits sind dabei für die Anzeigedauer - je größer die Zahl, die sich aus diesen 5 Bits ergibt, desto länger die Dauer... schaut Euch mal die Zahlen an und die Animation dazu, um ein Gefühl dafür zu bekommen...


    die roten Bits steuern die Helligkeit - dabei bedeutet:


    000 = normal, volle Helligkeit
    001 = Fade up, Helligkeit steigt während der Anzeigedauer von 0 auf max.
    010 = Fade down, Helligkeit sinkt während der Anzeigedauer von 0 auf max.
    011 = *nicht verwendet*, da könnt Ihr Euch was überlegen....
    100 = gedimmt, Helligkeit 1/5
    101 = gedimmt, Helligkeit 2/5
    110 = gedimmt, Helligkeit 3/5
    111 = gedimmt, Helligkeit 4/5


    Auch mit diesen 5 Stufen kann man schon was anfangen, im Video z.B. wo dieser "Sublime"-Schriftzug durchläuft und dabei pulsiert, das sind nur diese 5 Dimmerstufen... bei fade up und down werden jeweils 64 Stufen durchlaufen.


    Wenn das Steuerbyte "0" ist, dann weiß die Steuer-SW, dass die Animation zu Ende ist... vor die Animation muss noch ein Name (darf keine Sonderzeichen enthalten ausser _), damit man diese dann auch ansprechen kann - auch hier wieder ein Beispiel:


    Code
    atmen:
    
    
    .db 0b11100001, 1	; Full On Up langsam
    .db 0b11100010, 1	; Full On Down langsam
    .db 0, 0		; *** Ende Animation ***


    Eine Animation kann beliebig viele Schritte haben, so viel, wie der Speicher hergibt...


    Hierzu auch interessant: die Bilder aus dem Speicher können auch mit verschiedenen Effekten verschieden "zusammengebaut" werden: so greift z.B. die Animation "Geflimmer" (Beispieldatei) auf die selben Bilder wie die Animation "Geblubber" zu, nur halt in anderer Reihenfolge und mit anderen Effekten....


    3. Programm (Ablauf)


    Das Programm ist dann nur noch eine Aneinanderreihung von Aufrufen der Animationen - diese können beliebig oft in beliebiger Reihenfolge aufgerufen werden (nur durch den Speicher begrenzt)... vor dieser Liste muss "Programm:" stehen!


    Die Animationen bekommen Namen (Adresslabel), mit diesen wird ein Zeiger geladen - daher rührt das "Animationsname*2", weil die Adresse ein Word ist, der Zeiger das aber in Bytes haben will...


    Hier bedeutet das Word 0xFFFF (eine Adresse, die es im Tiny nicht gibt) dann das Ende des Programms, es beginnt wieder von vorne.


    Hier noch die komplette Beispielanimation (nächster Beitrag, sonst zu lang, wären über 10.000 Zeichen 8o)

    Dateien

    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!

    2 Mal editiert, zuletzt von Pesi ()

  • 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!

  • Der Vollständigkeit halber (evtl. will das ja jemand selbst auf Lochraster o.ä. aufbauen) hier noch der Schaltplan des Ganzen:


    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!