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.


Comments