Beiträge von danbruc

    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.

    Ich bin da ganz bei tauruz - ich würde mir nicht die Möglichkeit verbauen, alle Regalfächer einzeln anzusteuern; 6x9 Pixel ist schon ein kleines Display mit dem man ein paar Spielereien umsetzen könnte. Neben einer abwechslungsreicheren Beleuchtung, als alles eine Farbe, sollte zum zum Beispiel eine Laufschrift machbar sein. Oder eine Art Tetris für die Gäste zum Spielen. Oder ein Zufallsgenerator, den man per Buzzer stoppen und somit seine Cocktailzutaten auswählen kann (...das meiste wird sicher ungenießbar...^^).


    Andererseits, wenn man das nicht braucht oder will, macht es die Sache nur unnötig komplizierter, dauert länger und wird teurer. Das müssen dann die Barbesitzer wissen beziehungsweise entscheiden.


    Um den Beitrag von tauruz nochmal etwas ausführlicher wiederzugeben, eine Verkabelung für eine einzelne Ansteuerung würde wie folgt aussehen. In jedem Regalfach wäre ein einzelner Meter des LED-Strips verbaut. Der hat vier Anschlüsse und zwar, vereinfacht gesagt, einen Minuspol, den sich alle LEDs teilen, und drei Pluspole - einen für jede Farbe, so dass über drei verschiedene Spannungen die LEDs jeder Farbe unabhängig voneinander angesteuert werden können. Diese vier Anschlüsse würden dann zu einem Controller pro Regalfach geführt, der eben diese Regalfach ansteuert. Alle Controller werden dann über drei oder mehr Anschlüsse miteinander verbunden - Plus, Minus und Datenleitungen. Bei den Datenleitungen gibt es viele Varianten aber es bietet sich in diesem Fall die Verwendung von DMX mit zwei Datenleitungen an. Plus und Minus kommen schließlich an ein Netzteil und die Datenleitungen an einen Controller, der den 54 Segmenten ihre aktuelle Farbe und Helligkeit durch gibt.


    Und ... tata! ... ein unheimlich cooles (und hoches) Regal. Und egal ob 54 Pixel oder alles eine Farbe - Bilder fände ich auch super; ich schaffe es nur begrenzt mir ein 9 Meter hohes Regal in einer Bar vorzustellen. Oder die Addresse der Bar in der Hoffnung mal in der Nähe vorbeizukommen.


    (Wie auch immer ich darauf gekommen bin, dass das Regal aus quadratischen Fächern besteht...so scheint es nicht zu sein, wie ich gerade beim Hochscrollen gelesen habe. Aber auch dann sind viele Pixel noch toll; nur Tetris wird wohl nix werden...^^)

    Zitat

    Häää?? warum müssten sie dann 0,0 W haben ?? Wenn der verstärker mehr leistung bringt als die Boxen abhaben können , und man dreht das teil mal gut auf überschlägt sich doch jeder ton und es hört sich einfach nur grausam an ?


    Weil die Lautsprecher vermutlich nur im ausgeschalteten Zustand gut klingen.

    Wir wäre es mit messen? Die Impedanz steht meist irgendwo, dann eine Sinuston, zum Beispiel von einer Test-CD, abspielen und aufdrehen, bis es anfängt, nicht mehr toll zu klingen. Dann einfach die Spannung zwischen den Klemmen messen und der Rest ist ein bisschen Mathematik.

    Zitat

    Definitionssache - wenn man "ganz aus" auch als "Stufe" zählt, hat man eben insg. 256 Stufen (ganz aus, ganz an, 254 dazwischen).

    Bisschen unsauber formuliert - zählt man bis 255, hat man 257 Stufen, bis 254 noch 256 Stufen. Ich meinte die Differenz zwischen zwei Stufen nur noch 1/255 statt 1/256 Fullrange beträgt.

    Zitat

    The extreme values for the OCR0A Register represents special cases when generating a PWM waveform output in the fast PWM mode. If the OCR0A is set equal to BOTTOM, the output will be a narrow spike for each MAX+1 timer clock cycle.

    Genau dieser Satz hat mich stuzig gemacht. Wenn bei OCR0A gleich null der Ausgang einfach für einen Takt auf high liegt, dann wäre das ja nix besonderes. Und auch die Bezeichnung "narrow spike" klingt für mich nicht nach "high für einen Takt". Für mich klingt das, als ob mit nachgeschalteter kombinatorischer Logik der normale Impuls weggebüggelt wird und nur ein Glitch (in Größenordnung der Gatterverzögerungszeit) übrig bleibt.Aber so wirklich plausibel klingt das auch nicht - das wäre schon ein bisschen Pfusch bei Microcontrollerdesign. Hat das mal oder kann das mal jemand mit dem Oszi nachmessen? Würde mich interessieren.


    Deshalb dann auch meine Aussage zur Nichtlinearität - 0 wäre dann wirklich 0/256, weil der eigentliche 1/256 Impuls weggebügelt wurde, dann käme der Sprung auf 2/256 bei 1 und dann geht's normal mit 3/256 bei 2, 4/256 bei 3 bis zu 256/256 bei 255 weiter. Statt 0/256 gibt's so kein 1/256 mehr. Schließlich hat mich das auch bei der Beschreibung von analogWrite() in dem Artikel nachdenklich gemacht - da wird ja ganz klar gesagt, dass der Wert 0 gesondert behandelt und der Pin ohne PWM angesteuert wird. So wie ich das Datenblatt lese, wäre das aber absolut überflüssig.

    Wenn ich die Zeit finde, die Designs bis Anfang Februar zumachen, wäre ich auch dabe, aber viel Fläche werde ich wohl auf die schelle nicht besteuern können - 50, 100, vielleicht 200 cm². Einseitig könnte mit Glück gehen, aber zweiseitig wäre besser.

    Das Problem, dass man nicht 0% oder 100% Tastgrad erreicht, gibt es bei den meisten PWM-Modulen, zumindest in einigen Konfigurationen. Besonders sind davon aber einfache PWM-Module betroffen, die einen Zähler und ein Vergleichsregister mit der gleichen Breite besitzen. Das Problem ist, dass ein PWM-Zyklus bei einem Zähler mit n Bit Breite 2^n Takte dauert, dabei 2^n + 1 Tastgrade möglich sind, aber mit dem Vergleichsregister wieder nur 2^n Vergleichswerte dargestellt werden können.


    Um das mal noch besser zu verdeutlichen, nehmen wir mal ein hypothetisches 2-Bit-PWM-Modul. Ein vollständiger Zyklus des Zählers dauert 4 Takte, 0, 1, 2 und 3. Deshalb gibt es 5 mögliche Tastgrade für den Ausgang - 0, 1, 2, 3 oder 4 von 4 Takten auf high entsprechend 0%, 25%, 50%, 75% und 100% Tastgrad. Wenn das Vergleichsregister auch nur 2 Bit breit ist, können aber nur 4 Vergleichswerte und damit 4 Tastgrade ausgewählt werden - meist ist dann entweder 0% oder 100% nicht möglich und man kann eventuell zwischen beiden Optionen per Konfiguration wählen (das was tauruz als "compare up/down" bezeichnet). Hier kann man sich dann behelfen indem man, wie bereits erwähnt, das PWM-Modul bei dem Grenzfall abschaltet und den Pin manuell ganz normal auf low oder high zieht.


    Wenn es das PWM-Modul zulässt - der ATmega168 kann das prinzipiell - kann man auch den Zähler früher auf 0 zurücksetzen, indem man den Zähler so konfiguriert, dass er nicht überläuft sondern bereits beim Erreichen eines bestimmten Wertes zurückgesetzt wird. Das hypothetisches 2-Bit-PWM-Modul hat dann nur noch einen Zyklus von (maximal) 3 Takten und zählt 0, 1, 2 und dann wieder von vorn 0, 1, 2. Nun gibt es nur noch die 4 Tastgrade 0%, 33%, 66% und 100%, also auch eine geringer Auflösung, aber diese können jetzt alle über das 2 Bit Vergleichsregister ausgewählt werden. Ein 8 Bit PWM-Modul zählt nur noch bis (maximal) 254 statt 255 und es kostet natürlich auch ein bisschen Auflösung - 255 statt 256 Stufen.


    Ob das jetzt beim ATmega168 funktioniert, kann ich nicht mit Sicherheit sagen - es ist zumindest nicht offensichtlich. Ich habe mir mal das Datenblatt angeschaut und die Timer sind schon relativ komplex. In den beiden PWM-Modi - Fast PWM und Phase Correct PWM - wird das Problem ganz anders gelöst. Es gibt extra Logik, die die beiden Extremfälle gesondert behandelt, und für 0% beziehungsweise 100% Tastgrad sorgt (Im Fast PWM Modus tritt wohl ein Glitch pro Zyklus auf, wenn ich das Datenblatt richtig verstehe). Wenn ich das alles richtig zusammengesetzt habe, führt dies dazu, dass der Wert 0 einem Tastgrad von 0/256 entspricht, 1 entspricht 2/256 (ein Schritt von 2/256), 2 entspricht 3/256 (ein Schritt von 1/256) und in Schritten von 1/256 geht es weiter bis zu 255 mit einem Tastgrad von 256/256. Die Ausgabe ist also nicht ganz linear aber man erreicht 0% und 100%.


    Ganz schön weit ausgeholt ... für das Problem von Currymuetze heißt das aber, zumindest in den Modi Fast PWM und Phase Correct PWM des ATmega168 sollte es kein Problem sein, 0% zu erreichen. Wie setzt du den Wert am Ausgang? analogWrite()? Die Bibliotheksfunktionen scheinen auch nochmal Sonderfälle zu behandeln (http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM) - ich habe aber selbst kein Arduino und auch keine Erfahrung mit dem Controller. Der erwähnte Artikel ist zwar von der Arduino-Homepage und ich gehe erstmal davon aus, dass die Leute wirklich wissen, wovon sie schreiben, aber der Artikel passt nicht ganz mit dem, was ich aus dem Datenblatt (http://www.atmel.com/dyn/resou…rod_documents/doc2545.pdf) gelesen habe, zusammen. Im Zweifel also alle Aussagen (von mir, dem Artikel und dem Datenblatt) nochmal kritisch hinterfragen.


    Verflixt, du hast ja ATmega1280 gesagt, aber Glück gehabt, die Timer sind zumindest sehr ähnlich wenn nicht sogar identisch (http://www.atmel.com/dyn/resou…rod_documents/doc2549.pdf).

    Als erstes solltest du den Code nochmal anschauen - das for-Schleifenfragment aus deinem Beitrag weiter oben hat schon mal einen Bug. Es muss entweder for (i = 0; i < 256; i++) { ... } oder for (i = 0; i <= 255; i++) { ... } sein. for (i = 0; i < 255; i++) { ... } zählt nur bis 254 so dass der PWM-Ausgang keine 100% Tastgrad erreicht.


    Beim Runterzählen muss es for (i = 255; i >= 0; i--) { ... } sein. for (i = 255; i > 0; i--) { ... } zählt nur bis 1 runter, so dass der PWM-Ausgang keine 0% Tastgrad erreicht. Aus Erfahrung - ich bin Softwareentwickler - kann ich sagen, dass das ein häufiger (Flüchtigkeits)fehler ist. Je nach Platzierung der Verzögerungen müssen eventuell auch nicht beide Schleifen von 0 bis 255 zählen, da sonst eventuell die Minimal- oder Maximalwerte für die doppelte Zeit ausgegeben werden.

    Danke für das Willkommen.
    Inzwischen habe ich auch deine Homepage entdeckt und mir die Fotos dort und in dem verlinkten Beitrag genauer angeschaut. Es sind also 1-Meter-Stücken oder gibt es die auch länger? Nach dem Vergleich der Platinen auf den Fotos würde ich sagen, es sind die selben, die es bei Sparkfun gibt, nur mit schwarzer statt weißer Platine.
    Was mich bis jetzt davon abgehalten hat, 1-Meter-Stücken zu nehmen ist, dass ich einen regelmäßigen Abstand der LEDs über die gesamte Länge benötige. Ich könnte zwar einfach die Anschlüsse abschneiden und die Elemente passend zusammen löten, aber das würde ich lieber vermeiden. Sind die Anschlüsse kurz und flexibel genug, so dass man die umbiegen und zwei Elemente nah genug für einen gleichmäßigen Abstand zusammen bekommen kann?

    Hallo zusammen,
    ich hätte auch Interesse an (mindestens) einem adressierbaren RGB-LED-Strip.

    • 5+ Meter Länge
    • 30+ LEDs pro Meter
    • 1 LED pro Pixel
    • 24 Bit Farbtiefe (richtig ansteuerbar wie beim WS2801, nicht fixe Funktionen wie beim HL1606)
    • 50+ Hz Wiederholrate bei 5 Meter Länge
    • Synchrone Übernahme der Daten aller Chips in die PWM-Module
    • Standardinterface wie SPI und einfaches Protokoll für die Ansteuerung bevorzugt
    • Gegen Wasser geschützt (IPx4+) wäre auch schön

    turi: Passen die Stripes, die du hast, zu meinen Wünschen?