129 lines
3.6 KiB
C++
129 lines
3.6 KiB
C++
#include "FastLED.h"
|
|
#define NUM_LEDS 60
|
|
CRGB leds[NUM_LEDS];
|
|
#define PIN 6
|
|
|
|
void setup()
|
|
{
|
|
FastLED.addLeds<WS2811, PIN, GRB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
|
|
}
|
|
|
|
// *** REPLACE FROM HERE ***
|
|
void loop() {
|
|
NewKITT(0xff, 0, 0, 8, 10, 50);
|
|
}
|
|
|
|
void NewKITT(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay){
|
|
RightToLeft(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
|
|
LeftToRight(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
|
|
OutsideToCenter(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
|
|
CenterToOutside(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
|
|
LeftToRight(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
|
|
RightToLeft(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
|
|
OutsideToCenter(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
|
|
CenterToOutside(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
|
|
}
|
|
|
|
void CenterToOutside(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
|
|
for(int i =((NUM_LEDS-EyeSize)/2); i>=0; i--) {
|
|
setAll(0,0,0);
|
|
|
|
setPixel(i, red/10, green/10, blue/10);
|
|
for(int j = 1; j <= EyeSize; j++) {
|
|
setPixel(i+j, red, green, blue);
|
|
}
|
|
setPixel(i+EyeSize+1, red/10, green/10, blue/10);
|
|
|
|
setPixel(NUM_LEDS-i, red/10, green/10, blue/10);
|
|
for(int j = 1; j <= EyeSize; j++) {
|
|
setPixel(NUM_LEDS-i-j, red, green, blue);
|
|
}
|
|
setPixel(NUM_LEDS-i-EyeSize-1, red/10, green/10, blue/10);
|
|
|
|
showStrip();
|
|
delay(SpeedDelay);
|
|
}
|
|
delay(ReturnDelay);
|
|
}
|
|
|
|
void OutsideToCenter(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
|
|
for(int i = 0; i<=((NUM_LEDS-EyeSize)/2); i++) {
|
|
setAll(0,0,0);
|
|
|
|
setPixel(i, red/10, green/10, blue/10);
|
|
for(int j = 1; j <= EyeSize; j++) {
|
|
setPixel(i+j, red, green, blue);
|
|
}
|
|
setPixel(i+EyeSize+1, red/10, green/10, blue/10);
|
|
|
|
setPixel(NUM_LEDS-i, red/10, green/10, blue/10);
|
|
for(int j = 1; j <= EyeSize; j++) {
|
|
setPixel(NUM_LEDS-i-j, red, green, blue);
|
|
}
|
|
setPixel(NUM_LEDS-i-EyeSize-1, red/10, green/10, blue/10);
|
|
|
|
showStrip();
|
|
delay(SpeedDelay);
|
|
}
|
|
delay(ReturnDelay);
|
|
}
|
|
|
|
void LeftToRight(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
|
|
for(int i = 0; i < NUM_LEDS-EyeSize-2; i++) {
|
|
setAll(0,0,0);
|
|
setPixel(i, red/10, green/10, blue/10);
|
|
for(int j = 1; j <= EyeSize; j++) {
|
|
setPixel(i+j, red, green, blue);
|
|
}
|
|
setPixel(i+EyeSize+1, red/10, green/10, blue/10);
|
|
showStrip();
|
|
delay(SpeedDelay);
|
|
}
|
|
delay(ReturnDelay);
|
|
}
|
|
|
|
void RightToLeft(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
|
|
for(int i = NUM_LEDS-EyeSize-2; i > 0; i--) {
|
|
setAll(0,0,0);
|
|
setPixel(i, red/10, green/10, blue/10);
|
|
for(int j = 1; j <= EyeSize; j++) {
|
|
setPixel(i+j, red, green, blue);
|
|
}
|
|
setPixel(i+EyeSize+1, red/10, green/10, blue/10);
|
|
showStrip();
|
|
delay(SpeedDelay);
|
|
}
|
|
delay(ReturnDelay);
|
|
}
|
|
// *** REPLACE TO HERE ***
|
|
|
|
void showStrip() {
|
|
#ifdef ADAFRUIT_NEOPIXEL_H
|
|
// NeoPixel
|
|
strip.show();
|
|
#endif
|
|
#ifndef ADAFRUIT_NEOPIXEL_H
|
|
// FastLED
|
|
FastLED.show();
|
|
#endif
|
|
}
|
|
|
|
void setPixel(int Pixel, byte red, byte green, byte blue) {
|
|
#ifdef ADAFRUIT_NEOPIXEL_H
|
|
// NeoPixel
|
|
strip.setPixelColor(Pixel, strip.Color(red, green, blue));
|
|
#endif
|
|
#ifndef ADAFRUIT_NEOPIXEL_H
|
|
// FastLED
|
|
leds[Pixel].r = red;
|
|
leds[Pixel].g = green;
|
|
leds[Pixel].b = blue;
|
|
#endif
|
|
}
|
|
|
|
void setAll(byte red, byte green, byte blue) {
|
|
for(int i = 0; i < NUM_LEDS; i++ ) {
|
|
setPixel(i, red, green, blue);
|
|
}
|
|
showStrip();
|
|
} |