// Bluetooth Hand Flame 3.0
// vgmlr
#include "FastLED.h"
#define NUM_LEDS 12
CRGB leds[NUM_LEDS];
#define PIN 3
// button
int button = 7;
int state = 0;
// mosfet
int mosfet = 5;
int burn = 1250;
void setup()
{
Serial.begin(9600);
FastLED.addLeds< WS2812B, PIN, GRB >(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
pinMode(button, INPUT);
pinMode(mosfet, OUTPUT);
digitalWrite(mosfet, LOW);
fire();
setAll(0, 0, 0);
showStrip();
}
void loop() {
if (Serial.available()) {
char data;
data = Serial.read();
if (data == '1') {
huzzah();
}
}
state = digitalRead(button);
if (state == LOW) {
delay(1000);
huzzah();
} else {
digitalWrite(mosfet, LOW);
}
}
void huzzah() {
fire();
digitalWrite(mosfet, HIGH);
delay(burn);
digitalWrite(mosfet, LOW);
setAll(0, 0, 0);
showStrip();
}
void fire() {
for (int k = 0; k < 255; k++) {
setPixel(0, 0, 0, k);
showStrip();
k = k + 3;
}
for (int k = 0; k < 255; k++) {
setPixel(11, 0, 0, k);
setPixel(1, 0, 0, k);
showStrip();
k = k + 3;
}
for (int k = 0; k < 255; k++) {
setPixel(10, 0, 0, k);
setPixel(2, 0, 0, k);
showStrip();
k = k + 3;
}
for (int k = 0; k < 255; k++) {
setPixel(9, 0, 0, k);
setPixel(3, 0, 0, k);
showStrip();
k = k + 3;
}
for (int k = 0; k < 255; k++) {
setPixel(8, 0, 0, k);
setPixel(4, 0, 0, k);
showStrip();
k = k + 3;
}
for (int k = 0; k < 255; k++) {
setPixel(7, 0, 0, k);
setPixel(6, 0, 0, k);
setPixel(5, 0, 0, k);
showStrip();
k = k + 3;
}
}
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();
}