Bike Light

Jake Pacholski & Joe McGrath

Bike Light

Our project is making a bike light. This bike light changes from off to on to blinking to alternating lights in order. The way to change the lights and what they do is to press a button.

Our project sets up five leds and a push button on an arduino breadboard. We set up the 6 things as pinmodes. The five lights as outputs and the push button as an input. The setup starts at 0 and every time you press and release the push button, it goes up until 3 then turns back to zero. The first mode is off when the value is at zero. The second mode is all on when the value is at one. The third value is blinking when the value is at two. The fourth value is alternating when the value is at three. The project involves things we learned in chapters 4 and 5.

video=http://www.youtube.com/watch?v=ICIp9xkCpNw&feature=youtu.be

Code

int switchPin = 2; // switch is connected to pin 2

int led1Pin = 12;

int led2Pin = 11;

int led3Pin = 10;

int led4Pin = 9;

int led5Pin = 8;

int val; // variable for reading the pin status

int val2; // variable for reading the delayed status

int buttonState; // variable to hold the button state

int lightMode = 0; // What mode is the light in

void setup() {

pinMode(switchPin, INPUT); // Set the switch pin as input

pinMode(led1Pin, OUTPUT);

pinMode(led2Pin, OUTPUT);

pinMode(led3Pin, OUTPUT);

pinMode(led4Pin, OUTPUT);

pinMode(led5Pin, OUTPUT);

Serial.begin(9600); // Set up serial communication at 9600bps

buttonState = digitalRead(switchPin); // read the initial state

}

void loop(){

val = digitalRead(switchPin); // read input value and store it in val

delay(10); // 10 milliseconds is a good amount of time

val2 = digitalRead(switchPin); // read the input again to check for bounces

if (val == val2) { // make sure we got 2 consistant readings

if (val != buttonState) { // the button state has changed

if (val == LOW) { // check if the button is pressed

if (lightMode == 0) { // if its off

lightMode = 1; // turn lights on!

} else {

if (lightMode == 1) { // if its all-on

lightMode = 2; // make it blink

} else {

if (lightMode == 2) { // if its blinking

lightMode = 3; // make it alternate

} else {

if (lightMode == 3) { // if its waving,

lightMode = 0; // turn light off

}

}

}

}

}

}

buttonState = val; // save the new state in our variable

}

// Now do whatever the lightMode indicates

if (lightMode == 0) { // all-off

digitalWrite(led1Pin, LOW);

digitalWrite(led2Pin, LOW);

digitalWrite(led3Pin, LOW);

digitalWrite(led4Pin, LOW);

digitalWrite(led5Pin, LOW);

}

if (lightMode == 1) { // all-on

digitalWrite(led1Pin, HIGH);

digitalWrite(led2Pin, HIGH);

digitalWrite(led3Pin, HIGH);

digitalWrite

led4Pin, HIGH);

digitalWrite(led5Pin, HIGH);

}

if (lightMode == 2) { // blinking

digitalWrite(led1Pin, HIGH);

digitalWrite(led2Pin, HIGH);

digitalWrite(led3Pin, HIGH);

digitalWrite(led4Pin, HIGH);

digitalWrite(led5Pin, HIGH);

delay(100);

digitalWrite(led1Pin, LOW);

digitalWrite(led2Pin, LOW);

digitalWrite(led3Pin, LOW);

digitalWrite(led4Pin, LOW);

digitalWrite(led5Pin, LOW);

delay(100);

}

if (lightMode == 3) { // alternate

digitalWrite(led5Pin, LOW);

digitalWrite(led1Pin, HIGH);

delay(50);

digitalWrite(led1Pin, LOW);

digitalWrite(led2Pin, HIGH);

delay(50);

digitalWrite(led2Pin, LOW);

digitalWrite(led3Pin, HIGH);

delay(50);

digitalWrite(led3Pin, LOW);

digitalWrite(led4Pin, HIGH);

delay(50);

digitalWrite(led4Pin, LOW);

digitalWrite(led5Pin, HIGH);

delay(50);

digitalWrite(led5Pin, LOW);

}

}

Some problems we faced were getting the alternating lights to light up in the right order. We finally discovered how to finish the project. Another problem was setting up the push button but we figured that out.

We would have added more lights and made a stable place to put the lights if we had more time.