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; }