-
Notifications
You must be signed in to change notification settings - Fork 0
/
fire.ino
64 lines (52 loc) · 1.59 KB
/
fire.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <FastLED.h>
#include "fire_data.h"
// Number of leds in each strip
#define NUM_LEDS1 40
#define NUM_LEDS2 46
// For led chips like WS2812, which have a data line, ground, and power, you just
// need to define DATA_PIN. For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
// Clock pin only needed for SPI based chipsets when not using hardware SPI
#define LEDS1_PIN 2
#define LEDS2_PIN 3
#define BOARD_LED_PIN 13
// Define the array of leds
CRGB leds1[NUM_LEDS1];
CRGB leds2[NUM_LEDS2];
// To store last time LED was updated
long previousMillis = 0;
// Sample time (milliseconds)
unsigned long interval = 40;
void setup() {
FastLED.addLeds<WS2811, LEDS1_PIN, RGB>(leds1, NUM_LEDS1);
FastLED.addLeds<WS2811, LEDS2_PIN, RGB>(leds2, NUM_LEDS2);
pinMode(BOARD_LED_PIN, OUTPUT);
// Light the LED on the Teensy board to show the board
// is working
digitalWrite(BOARD_LED_PIN, HIGH);
}
int i = 0;
int r , g, b, ofs;
int n = 0;
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
ofs = n*86;
// Set LEDs
for(i = 0; i < NUM_LEDS1; i++) {
r = r_data[ofs + i];
g = g_data[ofs + i];
b = b_data[ofs + i];
leds1[i].setRGB(r, g, b);
}
for(i = 0; i < NUM_LEDS2; i++) {
r = r_data[ofs + NUM_LEDS1 + i];
g = g_data[ofs + NUM_LEDS1 + i];
b = b_data[ofs + NUM_LEDS1 + i];
leds2[i].setRGB(r, g, b);
}
n = (n + 1) % N_SEQ;
FastLED.show();
previousMillis = currentMillis;
}
}