I have restructured my code. It looks a bit better.
/* This program will make police lights flash in certain patterns whiele in certain modes.
*/
const int buttonPin = 3;
//Declares the button pin. Hook up the button to +5v, then the other end to a 10k resistor to ground.
//Then from the button where the 10K resistor is hooked up, you hook that up to pin 3.
const int ledFrontLeft = 5; //Declares the front LED's
const int ledFrontRight = 6;
const int ledFogLightLeft = 7;
const int ledFogLightRight = 8;
const int ledBackLeft = 9; //Declares the rear LED's
const int ledBackRight = 10;
const int ledReverseLeft = 11;
const int ledReverseRight = 12;
int buttonMode = 0;
int buttonState = 0;
void setup(){
pinMode(buttonPin, INPUT);
pinMode(ledFrontLeft, OUTPUT); //For the front, you can put them into the headlights as long as they are bright enough.
pinMode(ledFrontRight, OUTPUT);
pinMode(ledFogLightLeft, OUTPUT); //Put them in the fog lights as well since they would barely be used.
pinMode(ledFogLightRight, OUTPUT);
pinMode(ledBackLeft, OUTPUT); //Use the tail-lights if you can find clear housings for them. If not, see how they look with blue LED's in the red housing.
pinMode(ledBackRight, OUTPUT);
pinMode(ledReverseLeft, OUTPUT); //The reverse lights should be used as long as they have a clear housing and are easily visible.
pinMode(ledReverseRight, OUTPUT);
}
//Declaring the flash patterns
void 3flash(){ //3x flash pattern
digitalWrite(ledFrontLeft, HIGH); //Flashes alternate LED's in the front and back 3x
digitalWrite(ledFogLightRight, HIGH);
digitalWrite(ledBackRight, HIGH);
digitalWrite(ledReverseLeft, HIGH);
delay(50);
digitalWrite(ledFrontLeft, LOW);
digitalWrite(ledFogLightRight, LOW);
digitalWrite(ledBackRight, LOW);
digitalWrite(ledReverseLeft, LOW);
delay(50);
digitalWrite(ledFrontLeft, HIGH);
digitalWrite(ledFogLightRight, HIGH);
digitalWrite(ledBackRight, HIGH);
digitalWrite(ledReverseLeft, HIGH);
delay(50);
digitalWrite(ledFrontLeft, LOW);
digitalWrite(ledFogLightRight, LOW);
digitalWrite(ledBackRight, LOW);
digitalWrite(ledReverseLeft, LOW);
delay(50);
digitalWrite(ledFrontLeft, HIGH);
digitalWrite(ledFogLightRight, HIGH);
digitalWrite(ledBackRight, HIGH);
digitalWrite(ledReverseLeft, HIGH);
delay(50);
digitalWrite(ledFrontLeft, LOW);
digitalWrite(ledFogLightRight, LOW);
digitalWrite(ledBackRight, LOW);
digitalWrite(ledReverseLeft, LOW);
delay(50);
digitalWrite(ledFrontRight, HIGH);
digitalWrite(ledFogLightLeft, HIGH);
digitalWrite(ledBackLeft, HIGH);
digitalWrite(ledReverseRight, HIGH);
delay(50);
digitalWrite(ledFrontRight, LOW);
digitalWrite(ledFogLightLeft, LOW);
digitalWrite(ledBackLeft, LOW);
digitalWrite(ledReverseRight, LOW);
delay(50);
digitalWrite(ledFrontRight, HIGH);
digitalWrite(ledFogLightLeft, HIGH);
digitalWrite(ledBackLeft, HIGH);
digitalWrite(ledReverseRight, HIGH);
delay(50);
digitalWrite(ledFrontRight, LOW);
digitalWrite(ledFogLightLeft, LOW);
digitalWrite(ledBackLeft, LOW);
digitalWrite(ledReverseRight, LOW);
delay(50);
digitalWrite(ledFrontRight, HIGH);
digitalWrite(ledFogLightLeft, HIGH);
digitalWrite(ledBackLeft, HIGH);
digitalWrite(ledReverseRight, HIGH);
delay(50);
digitalWrite(ledFrontRight, LOW);
digitalWrite(ledFogLightLeft, LOW);
digitalWrite(ledBackLeft, LOW);
digitalWrite(ledReverseRight, LOW);
delay(50);
}
void altFlash(){ //Alternating flashing
digitalWrite(ledFrontLeft, HIGH);
digitalWrite(ledFogLightRight, HIGH);
digitalWrite(ledBackRight, HIGH);
digitalWrite(ledReverseLeft, HIGH);
delay(50);
digitalWrite(ledFrontLeft, LOW);
digitalWrite(ledFogLightRight, LOW);
digitalWrite(ledBackRight, LOW);
digitalWrite(ledReverseLeft, LOW);
delay(50);
digitalWrite(ledFrontRight, HIGH);
digitalWrite(ledFogLightLeft, HIGH);
digitalWrite(ledBackLeft, HIGH);
digitalWrite(ledReverseRight, HIGH);
delay(50);
digitalWrite(ledFrontRight, LOW);
digitalWrite(ledFogLightLeft, LOW);
digitalWrite(ledBackLeft, LOW);
digitalWrite(ledReverseRight, LOW);
delay(50);
}
void Strobe(){ //Strobe all lights at the same time
digitalWrite(ledFrontLeft, HIGH);
digitalWrite(ledFrontRight, HIGH);
digitalWrite(ledFogLightLeft, HIGH);
digitalWrite(ledFogLightRight, HIGH);
digitalWrite(ledBackLeft, HIGH);
digitalWrite(ledBackRight, HIGH);
digitalWrite(ledReverseLeft, HIGH);
digitalWrite(ledReverseRight, HIGH);
delay(50);
digitalWrite(ledFrontLeft, LOW);
digitalWrite(ledFrontRight, LOW);
digitalWrite(ledFogLightLeft, LOW);
digitalWrite(ledFogLightRight, LOW);
digitalWrite(ledBackLeft, LOW);
digitalWrite(ledBackRight, LOW);
digitalWrite(ledReverseLeft, LOW);
digitalWrite(ledReverseRight, LOW);
delay(50);
}
void off(){ //Off statement
digitalWrite(ledFrontLeft, LOW);
digitalWrite(ledFrontRight, LOW);
digitalWrite(ledFogLightLeft, LOW);
digitalWrite(ledFogLightRight, LOW);
digitalWrite(ledBackLeft, LOW);
digitalWrite(ledBackRight, LOW);
digitalWrite(ledReverseLeft, LOW);
digitalWrite(ledReverseRight, LOW);
}
void loop() {
buttonState = digitalRead(buttonPin);
//buttonMode = 0; Uncomment if necessary.
if (buttonState == HIGH){ //When the button is pressed, it adds to the counter, and changes mode.
buttonMode++;
delay(500);
}
if (buttonMode == 0){
off;
}
while (buttonMode == 1){ //While the buttonMode variable equals 1, it will forever loop the LED's until the variable changes.
for(;;){
3flash;
}
}
while (buttonMode ==2){
for(;;){
altFlash;
}
}
while (buttonMode ==3){
for(;;){
Strobe
}
}
while (buttonMode ==4){
for(;;){
3flash;
altFlash;
Strobe;
}
}
if (buttonMode == 4){ //In mode 5, the counter is reset to 0, forcing the lights to turn off.
buttonMode = 0;
}
}