blob: b77e2fbeebc90072591cb529be175fdc0c18b18b (
plain)
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
|
void setup() {
pinMode(3, OUTPUT);
pinMode(5, OUTPUT);
}
int i = 127;
int j = 127;
int globalLimit = 255;
int ldr = 0;
int itercnt = 0;
boolean powerDown = false;
boolean powerUp = false;
void loop() {
itercnt++;
ldr = analogRead(A0);
if (ldr >= 1000 && globalLimit == 255) {
powerDown = true;
powerUp = false;
} else if (ldr < 1000 && globalLimit == 0) {
powerDown = false;
powerUp = true;
}
if (powerDown && globalLimit > 0) {
// slow shutdown
itercnt % 8 == 0 && globalLimit--;
} else if( powerUp && globalLimit < 255 ) {
// fast start
globalLimit++;
}
delay(50);
i = limit(i + (random(2) == 0 ? 8 : -8), 16);
j = limit(j + (random(2) == 0 ? 2 : -2), 2);
if (ldr > 600) {
analogWrite(3, j);
analogWrite(5, i);
} else { // Simply go dark
analogWrite(3, 0);
analogWrite(5, 0);
}
}
int limit(int i, int within) {
if (globalLimit < within)
return 0;
if (i > (globalLimit - within))
return globalLimit - within;
if (i < within)
return within;
return i;
}
|