aboutsummaryrefslogtreecommitdiffstats
path: root/lighting/tinyhouse.ino
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;
}