Hello all,
I'm working on a led project for my baby's stroller,
I have six led (3left, 3 right) that are controlled by a button press.
the loops works perfectly when I use digitalWrite but as soon as it hit the third step "lightMode == 3" with analogWrite the button stops responding,
I'm a noob with the arduino language and spent the last 48 hours googling my way through pages of forum ( I learned a lot )
but I still can't make the button register,
I also thought of using a digitalWrite fade, but the leds don't go down to "0".
What am I doing wrong?
thanks
/*
* http://www.ladyada.net/learn/arduino/lesson5.html
*Â Bike light, final version
*/
int switchPin = 12;Â Â Â Â Â Â Â // switch is connected to pin 2
int led1Pin = 2;
int led2Pin = 3;
int led3Pin = 4;
int led4Pin = 5;
int led5Pin = 6;
int led6Pin = 7;
int fadeValue = 0;
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);
 pinMode(led6Pin, 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 wave!
      } else {
 if (lightMode == 3) { // if its fading,
        lightMode = 4;    Â
       }else {
        if (lightMode == 4) { // turn light off!
        lightMode = 0; Â
       }
}
     }
    }
   }
  }
  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);
  digitalWrite(led6Pin, LOW);
  Serial.println ("lightMode");
  Serial.println ("----------");
  Serial.println ("sleep");
 }
 if (lightMode == 1) { // all-on
  digitalWrite(led1Pin, HIGH);
  digitalWrite(led2Pin, HIGH);
  digitalWrite(led3Pin, HIGH);
  digitalWrite(led4Pin, HIGH);
  digitalWrite(led5Pin, HIGH);
  digitalWrite(led6Pin, HIGH);
  Serial.println ("lightMode1");
  Serial.println ("----------");
  Serial.println ("on");Â
 }
 if (lightMode == 2) { // blinking
  digitalWrite(led1Pin, HIGH);
  digitalWrite(led2Pin, HIGH);
  digitalWrite(led3Pin, HIGH);
  digitalWrite(led4Pin, HIGH);
  digitalWrite(led5Pin, HIGH);
  digitalWrite(led6Pin, HIGH);
  delay(100);
  digitalWrite(led1Pin, LOW);
  digitalWrite(led2Pin, LOW);
  digitalWrite(led3Pin, LOW);
  digitalWrite(led4Pin, LOW);
  digitalWrite(led5Pin, LOW);
  digitalWrite(led6Pin, LOW);
  delay(100);
  Serial.println ("lightMode2");
  Serial.println ("----------");
  Serial.println ("blinky");Â
 }
 if (lightMode == 3) { // "fade"
  for (fadeValue = 0; fadeValue <= 255; fadeValue += 5){
  analogWrite (led1Pin, fadeValue);
  analogWrite (led2Pin, fadeValue);
  analogWrite (led3Pin, fadeValue);
  analogWrite (led4Pin, fadeValue);
  analogWrite (led5Pin, fadeValue);
  analogWrite (led6Pin, fadeValue);
  delay (10);
  }
 Â
  for (fadeValue = 255; fadeValue >= 0; fadeValue -= 5){
  analogWrite (led1Pin, fadeValue);
  analogWrite (led2Pin, fadeValue);
  analogWrite (led3Pin, fadeValue);
  analogWrite (led4Pin, fadeValue);
  analogWrite (led5Pin, fadeValue);
  analogWrite (led6Pin, fadeValue);
  delay (10);
  Serial.println ("lightMode3");
  Serial.println ("----------");
  Serial.println ("ffs just work");
  }
 }
 if (lightMode == 4) { // "wave"
  digitalWrite(led6Pin, 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);
  digitalWrite(led6Pin, HIGH);
  delay(50);
  Serial.println ("lightMode4");
  Serial.println ("----------");
  Serial.println ("strobe ");
 }Â
}
}