FastLed - Lauflicht als Sinuswelle / Lauflicht mit Schweif vorn und hinten

Alsooo :smiley:
Sinustest ist das gewünschte Muster.

Das möchte ich nun nur noch beschleunigen und verlangsamen können.

In der Art, dass eine Umdrehung in bpm angegeben werden kann.

Wenn ich beatsin8 verwende kommt nicht mehr das gewünschte Muster raus. Ich hab keine Idee wie ich das verwenden kann.

Die Geschwindigkeit stelle ich bei Sinustest mithilfe der Aktualisierungsrate ein wie schnell ich sinus inkrementiere. Das ist hier allerdings eingeschränkt, weil die Stufen abhängig von ms sind. Wenn ich nun sinus nicht um 1 sondern um 2 oder ähnliches inkrementiere verliere ich die 8 Bit Auflösung, was ich eigentlich nicht möchte und auch bei der Taktung glaub ich nicht so wirklich weiter hilft.

Momentan sehe ich nur die Lösung, sinus um 5 zu inkrementieren, Auflösung zu verlieren, aber die Geschwindigkeit dann besser einstellen zu können.

Hier mal zur Veranschaulichung:

Sinustest:

byte sinus = 0;
byte geschwindigkeit=1;
void loop()
{

  EVERY_N_MILLISECONDS(geschwindigkeit)
  {
    sinus++;
  }

  EVERY_N_MILLISECONDS(1000 / FRAMES_PER_SECOND)
  {
    sinustest();
    FastLED.show();
  }

}
void sinustest() {
  byte lHelligkeit;
  for (byte i = 0; i < NUM_LEDS; i++) {
    lHelligkeit = sin8(sinus + i * NUM_LEDS);
    //Serial.println(lHelligkeit);
    leds[i] = CHSV(0, 255, lHelligkeit);
  }
}

fade:

void fade()
{
  // a colored dot sweeping back and forth, with fading trails
  fadeToBlackBy( leds, NUM_LEDS, 50);
  byte pos = beatsin8( 30, 0, NUM_LEDS-1 );
  leds[pos] = CHSV( 0, 255, 255);
}

Sinustest2:

byte sinus = 0;
byte geschwindigkeit=1;
void loop()
{

  EVERY_N_MILLISECONDS(1)
  {
    sinus += geschwindigkeit;
  }

  EVERY_N_MILLISECONDS(1000 / FRAMES_PER_SECOND)
  {
    sinustest();
    FastLED.show();
  }

}
void sinustest2() {
  byte lHelligkeit;
  for (byte i = 0; i < NUM_LEDS; i++) {
    lHelligkeit = beatsin8( 20, NUM_LEDS, sinus + i * NUM_LEDS );
    //Serial.println(lHelligkeit);
    leds[i] = CHSV(0, 255, lHelligkeit);
  }
}