Arduino-WS (7)

#include <FastLED.h>

const int LEDPin = 4;
const int NPixels = 18; // LED Streifen Länge
CRGB leds[NPixels];

typedef struct
{ uint8_t ex;  // existiert
  uint8_t r,g,b;
  float pos, tempo;
} Lichtpunkt;

int        Lichtpunkte = 0;
const int  MaxLichtpunkte = 6;
Lichtpunkt lichter[MaxLichtpunkte];

void setup()
{ for (int i=0; i<MaxLichtpunkte; i++)
  { lichter[i].ex = 0;
  }
  FastLED.addLeds<NEOPIXEL, LEDPin>(leds, NPixels);
}

void loop()
{ 
  if (random(30)==1)
  { for (int i=0; i<MaxLichtpunkte; i++)
    { if (!(lichter[i].ex))
      { lichter[i].ex = 1;
      
        lichter[i].r = random(128);
        lichter[i].g = random(128);
        lichter[i].b = random(128);
        
        int w = random(3);
        lichter[i].r += (w==0 ?127 :0);
        lichter[i].g += (w==1 ?127 :0);
        lichter[i].b += (w==2 ?127 :0);
        
        lichter[i].pos = 0.0; // start oben
        lichter[i].tempo = 0.0;
        break;
      }
    } 
  }

  for (int i=0; i<NPixels; i++)  // LED Steifen alles schwarz
  { leds[i].r = 0;
    leds[i].g = 0;
    leds[i].b = 0;
    leds[i].setRGB(0,0,0);
  }
  for (int i=0; i<MaxLichtpunkte; i++) // i+=1  i=i+1
  { if (lichter[i].ex)
    { int pos = (int)(lichter[i].pos);
      if (pos<0 || pos>=NPixels) continue; // ausserhalb => nix tun
      leds[ pos ].setRGB
      ( lichter[i].r,
        lichter[i].g,
        lichter[i].b
      );
      
      lichter[i].pos += lichter[i].tempo;
      // lichter[i].pos = lichter[i].pos + lichter[i].tempo;      
      if (lichter[i].pos >= NPixels)
      { lichter[i].ex = 0;
      }

      lichter[i].tempo += 0.01;
    }
  }
  FastLED.show();
  delay(10);
}

Dieses Thema existiert noch nicht

Sie sind einem Link zu einer Seite gefolgt, die noch nicht existiert. Sie können die Seite mit dem Knopf Seite anlegen selbst anlegen und mit Inhalt füllen.