0
Offline
Newbie
Karma: 0
Posts: 8
Arduino rocks
|
 |
« Reply #3 on: May 24, 2011, 09:19:41 pm » |
I figured out what I needed to do - I wasn't even asking the right question I think. I needed to compare the state of the switch with the state in the previous loop. If it changed, I needed to run the intro first. #include "binary.h" #include "LedControl.h" #define switch 3 LedControl lc=LedControl(12,11,10,1); unsigned long delaytime=100; int mode = 0; int oldmode = 0; int val=0; int holdtime = 1000; int LEDPin = 13; byte spin[3]={B11011011,B10110110,B01101101}; byte load[9]={B00000000,B00000001,B00000011,B00000111,B00001111,B00011111,B00111111,B01111111,B11111111};
void setup() { pinMode(switch, INPUT); // Wake up lc.shutdown(0,false); // Brightness 0-15 lc.setIntensity(0,15); lc.clearDisplay(0); pinMode(LEDPin, OUTPUT); }
void spinup(){ lc.setIntensity(0,15); if (holdtime > 0) { lc.setRow(0,0,spin[0]); delay (holdtime); lc.setRow(0,0,spin[1]); delay (holdtime); lc.setRow(0,0,spin[2]); delay (holdtime); holdtime = (holdtime - 100); } if (holdtime == 0) { lc.setRow(0,0,spin[0]); delay (20); lc.setRow(0,0,spin[1]); delay (20); lc.setRow(0,0,spin[2]); delay (20); } }
void spinning(){ lc.setRow(0,0,spin[0]); delay (20); lc.setRow(0,0,spin[1]); delay (20); lc.setRow(0,0,spin[2]); delay (20); }
void loading(){ lc.setRow(0,0,load[1]); delay (200); lc.setRow(0,0,load[2]); delay (200); lc.setRow(0,0,load[3]); delay (200); lc.setRow(0,0,load[4]); delay (200); lc.setRow(0,0,load[5]); delay (200); lc.setRow(0,0,load[6]); delay (200); lc.setRow(0,0,load[7]); delay (200); lc.setRow(0,0,load[8]); delay (200); lc.setRow(0,0,load[9]); delay (200); lc.setIntensity(0,14); delay (200); lc.setIntensity(0,13); delay (200); lc.setIntensity(0,12); delay (200); lc.setIntensity(0,11); delay (200); lc.setIntensity(0,10); delay (200); lc.setIntensity(0,9); delay (200); lc.setIntensity(0,8); delay (200); lc.setIntensity(0,7); delay (200); lc.setIntensity(0,6); delay (200); lc.setIntensity(0,5); delay (200); lc.setIntensity(0,4); delay (200); lc.setIntensity(0,3); }
void waiting(){ lc.setIntensity(0,3); lc.setRow(0,0,load[8]); }
void loop() {
val = digitalRead(switch); if (val == LOW) { mode=0; } if (val == HIGH) { mode=1; } if (mode == 0 && oldmode == 1) { spinup();
} else if (mode == 0 && oldmode == 0) { spinning(); }
else if (mode == 1 && oldmode == 0) { loading();
}
else if (mode == 1 && oldmode == 1) { waiting(); } oldmode = mode; }
|