Go Down

Topic: testbericht zum WS2812 (Read 36038 times) previous topic - next topic

malerlein

Stefan.  Ja die habe ich einmal gesehen und war auch total fasziniert davon, aber ich wusste nicht wie die Uhr heisst. wenn Du Deine Equinox  fertig hast , must Du unbedingt ein Video einstellen. Ich bin schon sehr gespannt.

l.G.Jürgen.

PS. Uwe manschesmal bin ich ein fauler Sack....... SORRY  ]:)
l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

sschultewolter

Oder auf den anderen Stefan (Eisebaer) warten. Er ist auch noch dran.
Keinen technischen Support über PN!

uwefed


PS. Uwe manschesmal bin ich ein fauler Sack....... SORRY  ]:)

Das war ja als Motivation gedacht.  ;) ;) ;)
Grüße Uwe

malerlein

so habe ich es auch aufgefasst Uwe  ]:)

l.G.Jürgen
l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

Eisebaer

hi,

Quote
Oder auf den anderen Stefan (Eisebaer) warten. Er ist auch noch dran


lieber jürgen, an meiner equinox bin ich jetzt schon ein jahr dran.

das problem ist:

ICH BIN AUCH EIN FAULER SACK !

müßte endlich mal zum metalab fahren wegen des plexi schneiden.

gruß stefan
nimm abblockkondensatoren!  100nF.  glaub mir, nimm abblockkondensatoren!

malerlein

Hallo Stefan

Schön Dich zu lesen, Das Projekt mit dem equinox, gefällt mir echt Gut, das werde ich Wohl als übernächstes Projekt angehen. Wenn ich meine Jetzige Uhr fertig habe werde ich mich erst einmal an die Dezimal Uhr vom Düsseldorfer Fernseturm ranmachen, den Nachbau möchte ich gerne an meinem Leuchtturm verwirklichen. Aber Du konntest mir einen Gefallen tun, ich habe Gestern auch die Strips von Alibaba bekommen mit den RGB LED Inkl. Controller. Jetzt habe ich das Problem es ist alles soweit fertig und ich bekomme auch die Strips ams laufen und in Farbe eingestellt so wie ich es gerne möchte. Jedoch weis ich nicht wie ich die Lichtstärke einstellen kann, die einzelnen Chips sind für meine Uhr zu hell und ich möchte sie gerne etwas runter Dimmen, gibt es da einen besonderen Befehl für?

l.G.Jürgen
l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

sschultewolter

#111
Oct 08, 2013, 03:41 pm Last Edit: Oct 08, 2013, 03:50 pm by sschultewolter Reason: 1
Ja, gibt es. Wie steuerst du die Farben an?

Bitte kurz mit Sketch.

Die mM nach schönste Möglichkeit ist über den HSV Farbraum. Hier entspricht "hue" dem Wert von 0 - 360°. Achtung, die FastSPI Libaray arbeitet aufgrund der Performance nur mit 0 - 255!! Das heißt für dich Farbton in ° aus der Wikitabelle / 360 * 255.
http://en.wikipedia.org/wiki/File:HSV-RGB-comparison.svg

HSV
Code: [Select]

uint8_t hue = (0 ... 255); // Farbton siehe oben
uint8_t saturation = 255; // Sättigung, 255 für volle Farbsättigung
uint8_t brightness = 127; // Helligkeit, 255 für volle Helligkeit
leds[i] = CHSV(hue, saturation, brightness);



Alternativ bei RGB
Code: [Select]

uint8_t  brightness = 127;
uint8_t r = 255;
uint8_t g = 0;
uint8_t  b = 0;

leds[i] = CRGB(r * brightness / 255, g * brightness / 255, b * brightness / 255);
// oder
leds[i].r = r * brightness / 255;
Keinen technischen Support über PN!

malerlein

llo

Also ich habe ja immer nur eine Farbe eine für die Spitze des inutenzeigers und eine für die Spitze des Sekundenzeigers


    analogWrite(ledMin[nr2-1], 0);  // schaltet 2 weisse LED in der Momentanen stellung des Zeigers aus (5mm LED)
    analogWrite(ledMin[nr2], mi);   // schaltet 2 weisse LED an der nächsten Stellung des Zeigers an (5mm LED)
    ledspit[nr2] = CRGB::Blue;               // schaltet die Spitze des Minutenzeigers auf Blau (Chip)
    ledspit[nr2-1] = CRGB::Black;         // schaltet die Spitze der Momentanen Stellung ab.(Chip)

Zeigerstellung holt er sich aus einem Array so auch die Sekunden und die Stunden, So ist die Abfrage im Programm, nur ich bekomme die Helligkeit nicht hin.

l.G.Jürgen
l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

uwefed


Jedoch weis ich nicht wie ich die Lichtstärke einstellen kann, die einzelnen Chips sind für meine Uhr zu hell und ich möchte sie gerne etwas runter Dimmen, gibt es da einen besonderen Befehl für?
l.G.Jürgen

Da gibt es nur die Möglichkeit kleinere Werte zu nehmen.
Statt für weis 255.255.255 nimmst Du 127,127,127 Statt einer Farbe zB 255.0.0 dann 127,0,0 bzw 255,127,63 dann 127,63,31 ecc.
Du kannst Ein map machen wobei der Maxzielwert die Helligkeit angibt. Nachteil: Du verringerst den Farbraum (Anzahl der möglichen Farben).

ps. Zu den faulen Säcken hab ich wenig zu sagen. Ich bin zu involwiert um eine unabhängige, objektive Aussage machen zu können oder anders ausgedrückt: ICH BIN AUCH EIN FAULER SACK !

Grüße Uwe

sschultewolter

Code: [Select]
ledspit[nr2].b = 127;
ledspit[nr2-1].b = 0; //oder ledspit[nr2-1] = CRGB::Black falls andere Farben damit noch angezeigt werden
Keinen technischen Support über PN!

malerlein

#115
Oct 08, 2013, 04:17 pm Last Edit: Oct 08, 2013, 04:24 pm by malerlein Reason: 1
Danke zusammen, das hilft mir echt weiter. Ich fummel mich so durch und es macht echt Spaß mit den Strips zu Arbeiten, es hat auch geklappt mit den 12 Chips auf der Uhr für die Zeiger verlängerung, garkeine Probleme mit der Bestromung, Jetzt läuft die komplette Uhr mit AM und PM sowie des Strips umer den Mega , passt alle prima. ach was mir noch einfällt ich weis nicht wieso aber ein Strip gibt mir bei RGB eine fasche Farbe raus, wenn ich Red angebe ist Chip Grün und wenn ich Green angebe ist er Rot. Gut wenn mans weis ist es egal , ich habe so ein kleines Programm probiert das heist   RGBCalibrate  aber das ändert auch nichts.

l.G.Jürgen
l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

sschultewolter

In void setup(), das
Code: [Select]
FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
durch das
Code: [Select]
FastLED.addLeds<WS2812B, DATA_PIN, GRB>(leds, NUM_LEDS);
austauschen.
Keinen technischen Support über PN!

malerlein

Danke , hat geklappt

l.G.Jürgen
l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

malerlein

Hallo ich habe noch einmal eine Frage zu den Strips, ich habe soweit alles verbaut, jedoch habe ich das Problem bei den Strips, es sind genau 12 Chips verbaut wovon 2 immer an sind, als Lauflicht. Ein licht verlängert den Sekundenzeiger und der andere verlängert den Minutenzeiger. Soweit so Gut, Ich habe die Uhr jetzt im Dauertest seit 2 Std laufen und es funzt so wie ich es haben möchte, jedoch bei den Chips also den für den Sekundenzeiger kommt es öfters vor das nicht ein licht sondern beim Durchlauf igendwo in der Reihe noch eins an bleibt, wenn das Lauflicht wieder darüber läuft ist wieder alles normal, jedoch das kommt in unregelmässigen Abständen immer wieder vor.

//sekunden angabe
    analogWrite(ledSek[nr1-1], 0);    // löscht die letzten gebrauchten LED weiss
    analogWrite(ledSek[nr1], se);      // holt sich die Daten aus einem Array und schaltet 2 3mm weisse LED
    leds[nr1] = CRGB::Green,g,b;       // holt sich die Daten aus dem gleichen Array 1 Chip in Grün
    leds[nr1-1] = CRGB::Black;            // löscht den letzt gebrauchten Chip in Grün
   
    //minuten angabe
    analogWrite(ledMin[nr2-1], 0);     // löscht die letzten gebrauchten LED weiss
    analogWrite(ledMin[nr2], mi);      // holt sich die Daten aus einem Array und schaltet 2 3mm weisse LED
    leds[nr2] = CRGB::Blue,g,b;            // holt sich die Daten aus dem gleichen Array 1 Chip in Blau
    leds[nr2-1] = CRGB::Black;              // löscht den letzt gebrauchten Chip in Blau

Es klappt alles wunderbar ausser das im Lauflichtbei der Sekunden Anzeige ab und an 2 gleiche LED an sind,

l.G.Jürgen
l.G.Jürgen

Verzeihe Deinen Feinden, aber vergesse nie Ihren Namen.

sschultewolter

Jürgen, kannst du mal deinen ganzen Sketch hier hineinkopieren?

Ich denke, ich weiß wo dein Problem liegt. Das Problem taucht vermutlich immer an der gleichen Stelle auf. Du lässt immer die vorherige LED löschen (nr-1). Was nun, wenn deine LED an Position 0 angekommen ist? Er versucht nr-1 => -1 zu löschen. Diese ist bei dir aber nicht vorgesehen.

Ich habe es bei mir etwas anderes gemacht.

Ich lasse zu Beginn jedes loops die LEDs vom Strip löschen.
Code: [Select]

for(int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(0, 0, 0);

Alle LEDs vom Strip werden somit ausgeschaltet. Dieses geschiet aber nicht sofort, da bei uns erst FastLED.show() die Leds entsprechend beschaltet.

Somit gehst du wie folgt vor,

Code: [Select]

// 1) Alle LEDs im Schritt löschen
for(int i = 0; i < NUM_LEDS; i++) leds[i] = CRGB(0, 0, 0);

// 2) Alle LEDs einschalten, die du benötigst. Ein Ausschalten ist nicht notwendig aufgrund von Schritt 1
// nur ein Bsp
leds[12].b = 255;

// 3) Datensätze an die WS Controller scharf schalten
FastLED.show()

Keinen technischen Support über PN!

Go Up