// 06-Comet Effect - LED Strip Arduino Tutorial - FastLED Effects - on RGB LED WS2812B and Neopixels
// https://www.youtube.com/watch?v=yM5dY7K2KHM&list=RDCMUCNzszbnvQeFzObW0ghk0Ckw&start_radio=1
// 設定步驟
// include lib
// include header
// set led_pin
// set num_leds
// call addleds()
// call show()
#include <Arduino.h>
#define FASTLED_INTERNAL
#include <FastLED.h>
#define NUM_LEDS 45 // FastLED definitions
#define LED_PIN 5
CRGB g_LEDs[NUM_LEDS] = {0}; // Frame buffer for FastLED
int g_Brightness = 64; //0-255 brightness scale
//#include "marque.h"
//#include "twinkle.h"
// 計算幀數
double FramesPerSecond(double seconds){
static double framesPerSecond;
framesPerSecond = (framesPerSecond * .9)+(1.0 / seconds * .1);
return framesPerSecond;
}
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
Serial.begin(115200);
while(!Serial){}
Serial.print("Arduino Startup");
FastLED.addLeds<WS2812B, LED_PIN, GRB>(g_LEDs, NUM_LEDS); // Add our LED strip to the FastLED library
FastLED.setBrightness(64);
}
void loop() {
bool bLED = 0;
double fps = 0;
uint8_t initialHue = 0;
const uint8_t deltaHue = 16;
const uint8_t hueDensity = 4;
for(;;){
bLED = !bLED;
digitalWrite(LED_BUILTIN, bLED);
double dStart = millis() / 1000.0;
// Handle LEDs
//DrawMarquee();
//DrawTwinkle();
/*
for(int i = 0; i < NUM_LEDS; i++){
//g_LEDs[i] = CRGB::Red;
g_LEDs[i] = CRGB::White;
}
*/
//fill_solid(g_LEDs, NUM_LEDS, CRGB::Green);
fill_rainbow(g_LEDs, NUM_LEDS, initialHue += hueDensity, deltaHue);
FastLED.setBrightness(g_Brightness);
delay(34);
FastLED.show();
double dEnd = millis() / 1000.0;
fps = FramesPerSecond(dEnd - dStart);
Serial.print("FPS: ");
Serial.println(fps);
}
}