Skip to content

Instantly share code, notes, and snippets.

@sli
Created January 29, 2011 02:21
Show Gist options
  • Save sli/801435 to your computer and use it in GitHub Desktop.
Save sli/801435 to your computer and use it in GitHub Desktop.
Prototype for fancy stair lighting.
int pins[] = {11,10,9};
int SPEED = 255;
int buttonA = 3;
int buttonB = 2;
int buttonStateA = LOW;
int buttonStateB = LOW;
int numleds = sizeof(pins)/sizeof(int);
byte ON = 0;
// toggles LEDs from top to bottom (high pins to low pins)
void t2b() {
if (ON == 0) {
for (int x=0;x<numleds;x++) {
for (int i=0;i<=255;i++) {
analogWrite(pins[x], i);
delay(SPEED);
}
}
ON = 1;
} else {
for (int x=0;x<numleds;x++) {
for (int i=255;i>=0;i--) {
analogWrite(pins[x], i);
delay(SPEED*2);
}
}
ON = 0;
}
}
// toggles LEDs from bottom to top (low pins to high pins)
void b2t() {
if (ON == 0) {
for (int x=numleds;x>=0;x--) {
for (int i=0;i<=255;i++) {
analogWrite(pins[x], i);
delay(SPEED);
}
}
ON = 1;
} else {
for (int x=numleds;x>=0;x--) {
for (int i=255;i>=0;i--) {
analogWrite(pins[x], i);
delay(SPEED*2);
}
}
ON = 0;
}
}
void setup() {
for (int x=0;x<numleds;x++) {
pinMode(pins[x], OUTPUT);
}
pinMode(buttonA, INPUT);
pinMode(buttonB, INPUT);
// make speed values make more sense
// higher setting = faster fading
// tl;dr 1 = 255, 255 = 1
SPEED = map(SPEED, 1, 255, 255, 1);
}
void loop() {
// wait for input trigger
buttonStateA = digitalRead(buttonA);
buttonStateB = digitalRead(buttonB);
if (buttonStateA == HIGH) {
t2b();
delay(2334);
t2b();
}
if (buttonStateB == HIGH) {
b2t();
delay(2334);
b2t();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment