Vor Jahren hat ja mal ein Künstler die 'Kerze 2.0' (weiß jetzt nicht seinen Titel, evtl. 'my new flame', oder so) entwickelt und auch zum Kauf angeboten.
Vor ein paar Jahren hab' ich die auch entdeckt und für interessant befunden, aber nicht weiter darüber nachgedacht, wie man sowas mit bascom machen könnte. Jetzt hab' ich drüber nachgedacht, bin aber nicht fertig geworden. Meine bisherigen Erkenntnisse wären:
Die Ledmatrix (8 Spalten und 16 Reihen = 128 Leds) aus warmweißen Leds werden per Multiplex angesteuert. Ein paar Helligkeitsstufen, 4 könnten schon reichen, bei dem Raster ist der Randbereich sowieso nicht breit, sollten sein, um eine allzu scharfe Abgrenzung zu vermeiden. Soft-pwm in der üblichen Art mit if- Abfragen bei 128 Leds, wird nicht schnell genug gehen. Mein Gedanke dazu wäre so: die Matrix wird spaltenweise angesteuert, 2 komplette ports steuern alle 16 Reihen an, durch einen weiteren port, mit einem ULN-Treiber verstärkt, werden einzelne Spalten angesteuert. Es leuchten also bis zu 16 Leds gleichzeitig, nach Durchschalten der 8 Spalten ist ein Bild komplett dargestellt. Der Inhalt wird dazu in 8 words oder 16 bytes vorgehalten. Jedes bit aus diesem Speicherarray entspricht einer Led. Jetzt geht nur an oder aus. Reiht man aber noch 3x solche array dazu, die nacheinander ausgegeben werden, hat man pro Led 4 bits, deren Zustand die mittlere Helligkeit der Led bilden. Alle bits=0, Led dunkel, 1 bit=1, Led leuchtet mit 1/4 Helligkeit, 2 bits gesetzt, halbe Helligkeit, na ja, so geht's halt weiter. Man muss also nur! das gewünschte Bild in die 4 Speicherarrays schreiben, wobei unterschiedliche Bilder die Helligkeitsabstufungen erzeugen. Je öfter ein bit dabei gesetzt wird umso heller leuchtet die betreffende Led. Da man aber nur 4x16=64 bytes bearbeiten muss, sollte sich das auch zeitlich machen lassen.
Die isr für das Multiplexen muss nur 3 bytes in einem Durchgang an die ports senden. Wenn jetzt 30 Komplettbilder mit 4 Helligkeitsstufen pro Sekunde angezeigt werden sollen, dann müsste die isr pro Sekunde 8Spalten x 4Helligkeitsbilder x 30Gesamtbilder = 960 mal pro Sekunde aufgerufen werden. Das klingt jetzt auch nicht so dramatisch.
Wo ich aber noch nicht groß weiter gekommen bin, wie bekommt man jetzt ein wechselndes Bild der Flamme in den Bildspeicher, samt den Helligkeitsabstufungen.
Welche Ideen hättet ihr denn?
Vor ein paar Jahren hab' ich die auch entdeckt und für interessant befunden, aber nicht weiter darüber nachgedacht, wie man sowas mit bascom machen könnte. Jetzt hab' ich drüber nachgedacht, bin aber nicht fertig geworden. Meine bisherigen Erkenntnisse wären:
Die Ledmatrix (8 Spalten und 16 Reihen = 128 Leds) aus warmweißen Leds werden per Multiplex angesteuert. Ein paar Helligkeitsstufen, 4 könnten schon reichen, bei dem Raster ist der Randbereich sowieso nicht breit, sollten sein, um eine allzu scharfe Abgrenzung zu vermeiden. Soft-pwm in der üblichen Art mit if- Abfragen bei 128 Leds, wird nicht schnell genug gehen. Mein Gedanke dazu wäre so: die Matrix wird spaltenweise angesteuert, 2 komplette ports steuern alle 16 Reihen an, durch einen weiteren port, mit einem ULN-Treiber verstärkt, werden einzelne Spalten angesteuert. Es leuchten also bis zu 16 Leds gleichzeitig, nach Durchschalten der 8 Spalten ist ein Bild komplett dargestellt. Der Inhalt wird dazu in 8 words oder 16 bytes vorgehalten. Jedes bit aus diesem Speicherarray entspricht einer Led. Jetzt geht nur an oder aus. Reiht man aber noch 3x solche array dazu, die nacheinander ausgegeben werden, hat man pro Led 4 bits, deren Zustand die mittlere Helligkeit der Led bilden. Alle bits=0, Led dunkel, 1 bit=1, Led leuchtet mit 1/4 Helligkeit, 2 bits gesetzt, halbe Helligkeit, na ja, so geht's halt weiter. Man muss also nur! das gewünschte Bild in die 4 Speicherarrays schreiben, wobei unterschiedliche Bilder die Helligkeitsabstufungen erzeugen. Je öfter ein bit dabei gesetzt wird umso heller leuchtet die betreffende Led. Da man aber nur 4x16=64 bytes bearbeiten muss, sollte sich das auch zeitlich machen lassen.
Die isr für das Multiplexen muss nur 3 bytes in einem Durchgang an die ports senden. Wenn jetzt 30 Komplettbilder mit 4 Helligkeitsstufen pro Sekunde angezeigt werden sollen, dann müsste die isr pro Sekunde 8Spalten x 4Helligkeitsbilder x 30Gesamtbilder = 960 mal pro Sekunde aufgerufen werden. Das klingt jetzt auch nicht so dramatisch.
Wo ich aber noch nicht groß weiter gekommen bin, wie bekommt man jetzt ein wechselndes Bild der Flamme in den Bildspeicher, samt den Helligkeitsabstufungen.
Welche Ideen hättet ihr denn?
Raum für Notizen
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------