Go Down

Topic: RGB Wechsler - LEDs flackern (Read 332 times) previous topic - next topic

Sesselmann

Hab zur Zeit mal wider sehr wenig Zeit für irgendwas :/

Naja den Tip von Uwefed konnte ich gerade mal probieren. Leider leuchtet jetzt die LED auch nur dauerhaft in einer Farbe. Ich habe bloß mal wider keine Ahnung warum zum teufel oO... eigentlich sollte ja durch die zusätzlichen zeilen nur der Wert sich langsamer ändern und große Sprünge ausgleichen.... Ich glaub ich bin zu hohl für Microcontroller :()


Den Mittelwert nach Helmuth habe ich jetzt versucht zu bilden... naja also eigentlich tut es das was es soll... wenn ich die Werte durch den Mittelwertfleischwolf haue, schwankt die Zeit nur noch um ca. +-1.

Leider brachte das auch keine nenenswerte verbesserung. Anfangs läuft bei vielen Stellungen des Potis das ganze flüssig und gut. Nach 1-2 Minuten lässt sich bei vielen ein fading wenn überhaupt nur noch mit Phantasie erkennen.

Am auslesen des Zeitpotis kann es eigentlich gar nicht mehr liegen. Nach dem die Schwankungen anfangs genau so stark sind wie am ende, und das schwanken immer stärker wird.

Weitere Tips? wie gesagt, auslesen der Zeit lässt sich als Fehlerquelle ebenfalls mittlerweile ausschließen :/

uwefed

#16
May 27, 2015, 01:13 pm Last Edit: May 27, 2015, 01:18 pm by uwefed
Bitte den neuen Sketch.

Versuch mal http://eduardofv.com/read_post/179-Arduino-RGB-LED-HSV-Color-Wheel-
Der Farbwert wird als hue Wert zwischen 0 und <360 angegeben.

Grüße Uwe

Sesselmann

Hier ist mal der neue Sketch.

Code: [Select]

int rot = 11; //LED Ausgänge
int gruen = 10;
int blau = 9; 
int schalter = 3; //Schalter Variable
int wertrot = 0;  //Helligkeitsvariablen
int wertgruen = 0;
int wertblau = 0;
int rotpot = A0;   //Potieingaenge
int gruenpot = A1;
int blaupot = A2;
int zeitpot = A3;
int zeit;          //Wert für zeitwechsel
float sinzahl = 0; //Zähler für Sinus
float pi = 3.14159265;
int zeitsumme=0;

 

void setup() {
  pinMode (rot, OUTPUT);       //LED Ausgänge
  pinMode (gruen, OUTPUT);
  pinMode (blau, OUTPUT);
  pinMode (schalter, INPUT);   //Taster Eingang
  pinMode (rotpot, INPUT);     //Poti Eingänge
  pinMode (gruenpot, INPUT);
  pinMode (blaupot, INPUT);
  pinMode (zeitpot, INPUT);
  Serial.begin(9600);
}
void loop() {

  if (digitalRead(schalter) == LOW)
  {
int zeitzaehler=0;
for(zeitzaehler=0; zeitzaehler<10; zeitzaehler++);
{
  zeitsumme+=analogRead(zeitpot);
if (zeitzaehler ==10)
{
  zeitsumme=zeitsumme/10;
}
  }
   zeit=zeitsumme;
   Serial.println(zeit);
   wertrot = sin(sinzahl / zeit) * 1000;                  //sinus, rot)
   // Serial.println(wertrot);
    wertgruen = sin(sinzahl / zeit + pi * 2 / 3) * 1000;   //sinus, grün, 120° Phasenverschoben)
    //Serial.println(wertgruen);
    wertblau = sin(sinzahl / zeit + pi * 4 / 3) * 1000;    //sinus, blau, 240° Phasenverschoben
    //Serial.println(wertblau);
    wertrot = map(wertrot, -1000, 1000, 0, 255);           //auf Werte für LED übertragen
    wertgruen = map(wertgruen, -1000, 1000, 0, 255);
    wertblau = map(wertblau, -1000, 1000, 0, 100);
    analogWrite(rot, wertrot);                             //Farbe anzeigen
    analogWrite(gruen, wertgruen);                           
    analogWrite (blau, wertblau);
    sinzahl++;                            //zähler +1 für Sinuskurve
   // if (sinzahl ==2000000000)
     //   {
       //   sinzahl=1;
      //}   
     //Serial.println (sinzahl);
     delay (10);
   
  }

  else if (digitalRead(schalter) == HIGH) {

    wertrot = map(analogRead(rotpot), 0, 1023, 0, 255);        //Poti auslesen und in werte für LED umwandeln
    analogWrite (rot, wertrot);                                //Farbe anzeigen
    wertgruen = map(analogRead(gruenpot), 0, 1023, 0, 255);
    analogWrite (gruen, wertgruen);
    wertblau = map(analogRead(blaupot), 0, 1023, 0, 255);
    analogWrite(blau, wertblau);
  Serial.println(wertgruen);

        }
  }



Wie gesagt, der Mittelwert scheint zu tun was er soll. Aber nach einer gewissen Zeit wird nach einem Anfangs schönen fading ein einziges geflacker... Ohmann ein kleines feautre will man einbauen und nüscht geht mehr xD

Der HUE code.. naja also den kapiere ich nicht mal im Ansatz oO

Helmuth

Der HUE code.. naja also den kapiere ich nicht mal im Ansatz oO
Vielleicht hilft es, erstmal das Konzept dahinter zu kapieren. Schau dir mal das Diagramm an.

uwefed

Beim HSV hast Du 3 Werte:
* die Farbe HUE als Wert zwischen 0 und <360 als wert der Farbe in einem Farbrad.
* die Helligkeit
* die Farbsättigung.

Grüße Uwe

Go Up