/
mystery-box.ino
53 lines (41 loc) · 4.48 KB
/
mystery-box.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
int led_white = 9;
int led_red = 11;
int lid_switch = 12;
int brightness = 0; // how bright the LED is
int fadeAmount = 1 ; // how many points to fade the LED by
boolean red_state = false;
uint8_t gamma20[256] = {0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,11,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21,22,23,23,24,24,25,26,26,27,28,28,29,30,30,31,32,32,33,34,35,35,36,37,38,38,39,40,41,42,42,43,44,45,46,47,47,48,49,50,51,52,53,54,55,56,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,91,92,93,94,95,97,98,99,100,102,103,104,105,107,108,109,111,112,113,115,116,117,119,120,121,123,124,126,127,128,130,131,133,134,136,137,139,140,142,143,145,146,148,149,151,152,154,155,157,158,160,162,163,165,166,168,170,171,173,175,176,178,180,181,183,185,186,188,190,192,193,195,197,199,200,202,204,206,207,209,211,213,215,217,218,220,222,224,226,228,230,232,233,235,237,239,241,243,245,247,249,251,253,255};
uint8_t gamma22[256] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,8,8,8,9,9,9,10,10,11,11,11,12,12,13,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,22,22,23,23,24,25,25,26,26,27,28,28,29,30,30,31,32,33,33,34,35,35,36,37,38,39,39,40,41,42,43,43,44,45,46,47,48,49,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,73,74,75,76,77,78,79,81,82,83,84,85,87,88,89,90,91,93,94,95,97,98,99,100,102,103,105,106,107,109,110,111,113,114,116,117,119,120,121,123,124,126,127,129,130,132,133,135,137,138,140,141,143,145,146,148,149,151,153,154,156,158,159,161,163,165,166,168,170,172,173,175,177,179,181,182,184,186,188,190,192,194,196,197,199,201,203,205,207,209,211,213,215,217,219,221,223,225,227,229,231,234,236,238,240,242,244,246,248,251,253,255};
uint8_t gamma07[256] = {0,21,28,34,39,43,46,50,53,56,59,61,64,66,68,70,72,74,76,78,80,82,84,85,87,89,90,92,93,95,96,98,99,101,102,103,105,106,107,109,110,111,112,114,115,116,117,118,119,120,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,144,145,146,147,148,149,150,151,151,152,153,154,155,156,156,157,158,159,160,160,161,162,163,164,164,165,166,167,167,168,169,170,170,171,172,173,173,174,175,175,176,177,178,178,179,180,180,181,182,182,183,184,184,185,186,186,187,188,188,189,190,190,191,192,192,193,194,194,195,195,196,197,197,198,199,199,200,200,201,202,202,203,203,204,205,205,206,206,207,207,208,209,209,210,210,211,212,212,213,213,214,214,215,215,216,217,217,218,218,219,219,220,220,221,221,222,223,223,224,224,225,225,226,226,227,227,228,228,229,229,230,230,231,231,232,232,233,233,234,234,235,235,236,236,237,237,238,238,239,239,240,240,241,241,242,242,243,243,244,244,245,245,246,246,247,247,248,248,249,249,249,250,250,251,251,252,252,253,253,254,254,255,255};
uint8_t gamma40[256] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,4,4,4,4,4,5,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,9,9,9,9,10,10,11,11,11,12,12,13,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,21,21,22,23,23,24,25,25,26,27,27,28,29,30,31,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,52,53,54,55,57,58,59,61,62,63,65,66,68,69,71,72,74,75,77,79,80,82,84,85,87,89,91,93,95,96,98,100,102,104,107,109,111,113,115,117,120,122,124,126,129,131,134,136,139,141,144,146,149,152,155,157,160,163,166,169,172,175,178,181,184,187,190,194,197,200,203,207,210,214,217,221,224,228,232,236,239,243,247,251,255};
void setup() {
pinMode(led_white, OUTPUT);
pinMode(led_red, OUTPUT);
pinMode(lid_switch, INPUT);
digitalWrite(lid_switch, HIGH); // set pull-up resistor
digitalWrite(led_white, LOW);
digitalWrite(led_red, LOW);
}
void loop() {
boolean lid_open = !digitalRead(lid_switch);
if (lid_open) {
digitalWrite(led_white, LOW);
brightness = 0;
fadeAmount = 1;
red_state = !red_state;
digitalWrite(led_red, red_state);
delay(75);
} else {
digitalWrite(led_red, LOW);
// set the brightness of the white LED
analogWrite(led_white, gamma20[brightness]);
// change the brightness for the next loop iteration
brightness = brightness + fadeAmount;
// reverse the direction of the fading at the ends of the fade
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
// wait for 15 milliseconds to see the dimming effect
delay(15);
}
}