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 ");
}
}
}