// Adafruit_NeoPixel simple sketch
#include <Adafruit_NeoPixel.h>
#define LED_PIN 14
#define NUM_LEDS 300
#define BRIGHTNESS 100
Adafruit_NeoPixel pixels(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
#define DELAYVAL 100 // Time (in milliseconds) to pause between pixels
#define LAMBDA 100
int loops = 0; //ループの回数を数える
void setup() {
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
pixels.setBrightness(BRIGHTNESS);
Serial.begin(115200);
pixels.clear(); // Set all pixel colors to 'off'
}
int sinwave(int rgb, int _loops) {
float n;
n = (sin(2 * 3.14 * (float(_loops) / LAMBDA + float(rgb) / 3)) + 1) * 127.5;
n = pow((n/255),3)*255; //gamma transform
n = constrain(n, 3, 255);
return n;
}
void loop() {
//pixels.clear(); // Set all pixel colors to 'off'
for (int i = 0; i < NUM_LEDS; i++) { // For each pixel...
pixels.setPixelColor(i, pixels.Color(sinwave(0, loops),
sinwave(1, loops),
sinwave(2, loops)));
// pixels.setPixelColor(i, pixels.Color(sinwave(0, loops),0,0));
// Serial.println(i);
// Serial.println(loops);
// Serial.println(sinwave(0,loops));
// Serial.println(sinwave(1,loops));
// Serial.println();
}
pixels.show();
// delay(DELAYVAL); // Pause before next pass through loop
loops = ++loops % LAMBDA;
}