-
Notifications
You must be signed in to change notification settings - Fork 2
/
LEDtest_RGB.ino
133 lines (114 loc) · 2.78 KB
/
LEDtest_RGB.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include "FastSPI_LED2.h"
///////////////////////////////////////////////////////////////////////////////////////////
//
// Testing the LEDs on the Lumino ATMega328 robot,
// Sets Red, Green, Blue, White in turn
// 20 LEDs arranged clockwise around the Lumino as:
// 1 at left rear (0)
// 8 on left side (1 to 8 - rear to front)
// 1 on left front (9)
// 1 on right front (10)
// 8 on right side (11 to 18 - front to rear)
// 1 on right rear (19)
//
///////////////////////////////////////////////////////////////////////////////////////////
// How many leds are in the strip?
#define NUM_LEDS 19
// Data pin that led data will be written out over (11 for rev 0.2, 13 for 0.3 onwards)
#define DATA_PIN 13
// This is an array of leds. One item for each led in your strip.
CRGB leds[NUM_LEDS];
// This function sets up the ledsand tells the controller about them
void setup()
{
// sanity check delay - allows reprogramming if accidently blowing power w/leds
delay(2000);
FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
}
int wait = 500;
// This function runs over and over, and is where you do the magic to light
// your leds.
void loop()
{
// setAll(255,255,255);
// delay(3000);
// flicker();
allOff();
delay(wait);
setAll(40,0,0);
delay(wait);
setAll(0,40,0);
delay(wait);
setAll(0,0,40);
delay(wait);
setAll(40,40,40);
delay(wait);
}
void allOff()
{
for (int i=0; i<NUM_LEDS; i++)
leds[i] = 0;
FastLED.show();
}
void setAll(int red, int green, int blue)
{
for (int i=0; i<NUM_LEDS; i++)
{
leds[i].g = red;
leds[i].r = green;
leds[i].b = blue;
}
FastLED.show();
}
void pulse(int del, int maxBright, int red, int green, int blue)
{
for (int i = 0; i<maxBright; i++)
{
for (int j=0; j<NUM_LEDS; j++)
{
leds[j].g = (i*red) >> 8;
leds[j].r = (i*green) >> 8;
leds[j].b = (i*blue) >> 8;
}
FastLED.show();
delay(del);
}
for (int i = maxBright; i>=0; i--)
{
for (int j=0; j<NUM_LEDS; j++)
{
leds[j].g = (i*red) >> 8;
leds[j].r = (i*green) >> 8;
leds[j].b = (i*blue) >> 8;
}
FastLED.show();
delay(del);
}
}
void flicker()
{
int i;
// Move a single white led
for(i = 0; i < NUM_LEDS; i++)
{
// Turn our current led on to white, then show the leds
leds[i] = CRGB::Red;
// Show the leds (only one of which is set to white, from above)
FastLED.show();
// Wait a little bit
delay(100);
// Turn our current led back to black for the next loop around
leds[i] = CRGB::Green;
if(i>0)
leds[i-1] = CRGB::Black;
}
for(--i; i>=0; i--)
{
leds[i] = CRGB::Blue;
FastLED.show();
delay(100);
leds[i] = CRGB::Green;
if(i<NUM_LEDS-1)
leds[i+1] = CRGB::Black;
}
}