arduino stuffs
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
int pins[] = {9, 10, 11};

void setup() {
  Serial.begin(9600);
  for(int i = 0; i <= 2; i++) {
    pinMode(pins[i], OUTPUT);
  }
}

void fade(int pin, int length = 30, int hold = 1000, int times = 1) { 
  int brightness = 0;
  int fadeAmount = 7;
  int done_times = 0;
  bool up = true;
  while (true) {
    analogWrite(pin, brightness);

    brightness = brightness + fadeAmount;
    if (brightness > 254) { // dont know how to use max
      brightness = 255;
    }
    // wait
    delay(length);
    if (brightness <= 1 || brightness >= 252) {
      fadeAmount = -fadeAmount;
      up = !up;
      
      if (up) { //reached bottom, going back up again.
        done_times++;
        // Serial.println("going back up?");
        if (done_times == times) {
          analogWrite(pin, 0); // turn off the light
          break;
        }
      delay(hold);
      }
    }
  }
}

void loop() {
  for(int i = 0; i <= 2; i++) {
    int delay = 30;
    switch (i) {
      case 0 : fade(pins[i], 15, 2000); break; // red
      case 1 : fade(pins[i], 5, 200, 5); break; // yellow
      case 2 : fade(pins[i], 15, 5000); break; // green
    }
  }
}