LightMotion

  • Hallo,


    wir haben ein Semesterprojekt (1. Semester )welches sich LightMotion nennt...


    Das Prinzip ist :


    Eine Temperaturabhängige LED "Lampe" 50 x50 cm , es soll jenach temperatur die Farben wechseln....



    Das System besteht aus :


    - 16 LED Modulen mit je 4 RGB LEDs und einem LED Treiber ( TLC59116 )


    - 1 SHT15 von Sensirion ( temperatur / luftfeuchte sensor )


    Und einer Steuerplatine mit nem PIC32


    Für dieses semester haben wir nun mal das ganze konzept aufgestellt, einen Prototypen für die LED Module entworfen und eine Testsoftware geschrieben...


    Nächstes Semester soll das ganze dann fertig aufgebaut werden....


    Nun bin ich dabei mir gedanken über die Temperaturabhänige ansteuerung zu machen....



    Das ganze soll quasi abhänig von der Temperatur mit "warmen" oder "kalten" Farben irgendwelche Farbspiele abspielen.....



    soooo nun hab ich mir mal überlegt :


    für zb. die temperaturen 20-40 Grad


    Für jede Farbe R , G , B wird eine Gleichung aufgestellt.... und je nach temperatur wird halt dann der Farbwert ausgerechnet welcher nun Dargestellt werden soll....


    Das würde ja noch Funktionieren...


    Doch wie mach ich es dann das es Für jeden Wert eine gewisse Spanne gibt in der sich die Farben dann bewegen dass das ganze dann nicht so langweilig immer nur "eine Farbe" für "eine temperatur" darstellt, sondern immer auch noch etwas bewegung dabei ist :)


    Für tipps wäre ich dankbar :)


    gruß

  • Ja auch....


    Aber es soll auch wenn es jetzt beispielsweiße 25 grad hat nicht nur in der für 25 Grad errechneten Farbe Leuchten sondern es soll eine Kleine "Farbspanne" da sein in der das System dann hin und her Fadet...:-) weiß nich ob ich es so richtig rüberbringe wie ich es auch meine :-/

  • ja genau...!! aber...wie gesagt


    Die Farbe soll nicht wenn es jetzt konstant 25 grad hat immer gleich sein sondern es soll einen kleinen spielraum nach oben und unten geben in dem sich die farbe dann bewegt :) und es soll nicht nur warmweiß und kaltweiß geben sondern rötliche farben (mischfarben mit rot und grün halt ) für warme temperaturen und bläuliche farben ( mischfarben grün und blau) für "kalte" temperaturen

  • Nimm den Temperaturwert und addiere für jeden zu steuernden Kreis einen Zufallswert z.B. +/-10% dazu. In diese Richtung fadest du dann den Farbwert langsam. Wenn alle Kreise am berechneten Wert angekommen sind, neu messen und wieder einen Zufallswert addieren. Und so weiter. Informatiker 1. Semester sollten das grade so hinbekommen... :D

  • Ja so in die Richtung habe ich mir das auch überlegt... an der Implementierung wirds im endefekt auch nicht scheitern :D es fehlt nur noch der richtige grundgedanke dazu...


    Der Ansatz ist ja schonma nicht schlecht....ich verstehe nur nicht was du mit den zu steuernden "kreisen" meinst ?



    Ich denke ich werde ne tabelle mit farbwerten für temperaturen von 10-40 in 1 grad schritten im EEPROM ablegen und jenach dem was die temperatur ist auf die werte zugreifen und in nem bestimmten bereich um den eigenltichen Wert hin und her faden... :-/



    Hat jemand schonmal sowas ähnliches gemacht ?? Würd gern mal ein Video von so ner implementierung sehen...da es wohl noch faktoren gibt die man ausschliesen muss um IMMER einen schönen farbübergang hinzukriegen....bspw. größere temperatursprünge was ja "eigneltich" nicht vorkommt aber wohl trozdem berücksichtigt werden sollte...

  • nix für ungut... :whistling:

    es fehlt nur noch der richtige grundgedanke dazu...

    werden Deine Hauptgedanklichen Helfer dann wohlwollend bei Deinem Dekan erwähnt, erscheinen dann im Impressum... :P

    der Klaus


    Wer einen Fehler macht und ihn nicht korrigiert, begeht schon den nächsten...
    Denkmal ist ein Imperativ, der bei mir aus zwei Worten besteht...

  • Ich hab von alledem keine Ahnung, aber vorstellen könnte ich mir eine Steuerung so.
    blau = kalt
    grün = normal
    rot =warm
    Das Ganze dann faden wie SURPREME schon sagte.


    Aber dabei den aktuellen Trend (wärmer oder kälter) mit ausgeben. Also wenn die Temperatur innerhalb der letzten x Minuten gesunken ist, von rot nach grün faden.
    Wenn die Temperatur jedoch gestiegen ist, von grün nach rot faden. So kann man am Farbverlauf den Trend erkennen.

  • Das fände ich jetzt auch übertrieben, der ganze IP-Hype geht mir ohnehin schwerstens auf die Nerven (Die RIAA hat sogar einen eigenen Tag dafür gekauft *kotz*). Wenn jetzt jemand einen passenden Algorithmus postet, schaut das natürlich schon wieder anders aus. Viel sinnvoller und schöner (aber so gar nicht im Sinne der IP-Lobby) wäre es aber, das Ergebnis in Source und Schaltplan zu veröffentlichen. :) Da hätte mancher (und die Allgemeinheit) auch deutlich mehr von, als von einer Erwähnung in einem Quellenverzeichnis, das in einem Schrank verstaubt (wie das für solche Arbeiten halt so üblich ist).


    Meine Idee wäre auch, jeder Temperatur einen Farbwert zuzuordnen. Die Temperatur würde ich aber immer messen, nicht erst nach dem Fading-Ende (Grund kommt gleich). Dazu dann einen (in Grenzen zufälligen) Offset hin- und her durchlaufen und aufaddieren (kann ggfs. für jede Farbe einer sein), mußt natürlich Rollover verhindern. Der Offset kann auch für jede Farbe einzeln erzeugt werden.


    Nun zu den Temperatursprüngen: die gemessene Temperatur nicht direkt benutzen, sondern mittels einer weiteren Variable, die je Zeiteinheit um X in Richtung gemessener Temperatur geändert wird, eine künstliche Trägheit erzeugen (kann ja nach dem Einschalten einmalig auf den aktuellen Wert gesetzt werden). Der Betrag von X darf auch gerne abhängig sein von der aktuellen Differenz, also fadet es ggfs. anfangs schneller, als wenn die Differenz nur (noch) klein ist.


    Das Durchlaufen des Offsets kann beim Nachfaden ggfs. auch abgestellt werden, muß aber nicht (einfach schauen, was sich besser macht).


    Will man nicht unbedingt "sinnvolle" Übergänge schaffen (also, daß beim Faden von blau nach rot auch grün durchlaufen wird), sondern lieber arithmetische Mischfarben will, kann man auch statt der gemessenen Temperatur die Helligkeitswerte der einzelnen Farben einzeln nachlaufen lassen (unabhängig vom ggfs. auch dreifachen Offset).


    Oder man implementiert alle Optionen und ein Mäuseklavier zur Auswahl. ;)

  • Hi,



    Ich würde beides völlig voneinander trennen. Berechne 1. jeden Farbwert so, als ob er nur von der Temperatur abhängt. Dann jagst Du 2. jeden der Farbwerte noch durch eine weitere Funktionen, die eine zusätzliche Schwingung aufprägt.


    Eine Möglichkeit ist zum Beispiel eine 1/4 Sinusschwingung im Intervall [0..255] mit einer vorgegeben Auflösung vorherzuberechnen und im EEPROM abzulegen. Durch Spiegeln und Umklappen eine volle Periode zu erhalten und durch lineare Interpolation feinere Auflösungen zu errechnen (alles um Speicherplatz zu sparen).


    Diese Schwingung prägst Du dann den einzelnen Farbwerten auf, wobei Du noch einen Skalierungsfaktor in die Funktion gibts um die Stärke der maximalen Abweichung zu begrenzen. Zweitens gibts Du noch die Anzahl der zu berechnenden Zwischenwerte mit, um die Dauer einer Schwingungsperiode zu beeinflussen.


    Du kannst dann verschiedene dieser Parameter für R,G und B verwenden und diese auch noch mal zeitlich variieren oder sogar verschiedenen Wellenformen als Eingabeparameter zulassen.



    lg Sol.

  • Eine etwas andere Idee, die es bestimmt auch schon gibt.
    Die Module nebeneinander oder übereinander (16x1 bzw. 1x16), so das darauf ein zeitlicher Verlauf abgebildet wird.
    Die Mitte stellt dabei den momentanen Wert dar, die Module darunter die der vergangenen Zeit und die darüber die "vorhergesagte" Temperatur.


    Unterteil man z.B. in Stundenabschnitten kann man das Modul darunter zwischen minimaler Temperatur und maximaler Temperatur faden lassen, die innerhalb dieser Stunde gemessen wurde. Eins weiter darunter entsprechend die Stunde was zuvor geschah usw.


    Die Module darüber sind dann für die Vorhersage, je weiter weg umso grösser wird die Streuung.
    Hier kann man dann die Vergangenen Temperaturverlauf, die Luftfeuchte (verlauf) und die Tageszeit für die Berechnung einbeziehen.


    Gruß Gerd

  • Ich würde es wie folgt machen. Jeder Temperatur wird eine Farbe zugeordnet - entweder per Gleichung, zum Beispiel Splines, oder per Lookup-Tabelle. Die Zuordnung wird in HSV-Koordinaten gemacht, denn so lassen sich die Farben leichter und intuitiver variieren und interpolieren als zum Beispiel mit RGB-Koordinaten. Vermutlich reicht sogar einfach ein Farbverlauf von Blau nach Rot.


    Von dieser Basisfarbe wird dann ein Farbbereich, innerhalb dessen die Farben bei der aktuellen Temperatur variiert wird, abgeleitet. Zum Beispiel könnte man Blau in Richtung Cyan und Rot in Richtung Orange variieren oder auch ein bisschen an der Sättigung drehen. Was man nun mit diesem Farbbereich anstellt ist dann Geschmackssache. Man könnte einfach ständig aber langsam innerhalb des Farbbereiches herumfaden, entweder regelmäßig oder auch zufällig in einer Art Random-Walk.


    Viel interessanter wäre aber Folgendes. 16 Module á 4 LEDs ergeben 64 Pixel; damit könnte man den klassischen Plasma-Effekt realisieren - ungefähr wie hier, aber langsamer und mit weniger Variation in der Farbe. Oder vielleicht auch der 2D-Wasser-Effekt, aber hier scheitert es vermutlich an der Auflösung; müsste man dann testen.


    Mal sehen; wenn ich dann auf der Heimfahrt im Zug sitze, schreibe ich vielleicht mal eine kleine Demo.