//global because it's bedtime and I CBA to work out how to pass it around correctly,
int leds[4]; //int leds[] = {0, 1, 2, 3}; //array of LED pins
void LED_SET(int pin, boolean x) { //takes a pin and boolean and puts the pin HIGH or LOW
switch(x) { //used to switch LEDS on or off
case 0:
digitalWrite(pin, LOW);
break;
case 1:
digitalWrite(pin, HIGH);
break;
default:
blink();
}
}
void updateleds() {
for(int i=0;i<4;i++) {
LED_SET(i, leds[i]);
}
}
void ranum() {
delay(random(30, 1001));
}
void blink() {
digitalWrite(13, HIGH);
ranum();
digitalWrite(13, LOW);
ranum();
}
void setup() {
pinMode(13, OUTPUT); //set pin 13 as output
pinMode(0, OUTPUT); //etc
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
randomSeed(analogRead(0)); //gives it something to generate random numbers from
}
void loop() {
unsigned int tmp = 1;
unsigned int num = 1;
while(1) {
if(num==16)
num=0;
for(int i=28;i<32;i++) { // I have no idea how this bit works, but (apparently) it does.
tmp=num<<i; // /*
tmp=tmp>>31; // Wizardry
leds[i-28]=tmp; // */
updateleds(); // It was written by Sam Townsend
}
num++;
delay(500);
}
}