Please help

For makers who have purchased an Adafruit Starter Pack, get help with the tutorials here!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Spinsycle
 
Posts: 10
Joined: Sun Jul 31, 2011 4:21 pm

Please help

Post by Spinsycle »

I recently got the arduino budget pack. I love it i'm learning alot. I'm having a problem it probably a really fix but i'm a total noob when it comes to coding. I built the 5 led bike light at the bottom of lesson 5. It worked perfectly. I modified the circuit to have 10 led's and changed the code to match. everything worked fine. Next i wanted to add more modes. I have a bunch in mind but i need to get one working before i try 10. I figured i could just follow the same formatting to add more modes. The code compiles just fine uploads to board fine but only go's to first mode "all led's on" any more button pushes does nothing. Please help me get this working.

Here is the code i am using

[Edit - moderator - fixed code block]

Code: Select all

/*
 *  Bike light, final version
 */

int switchPin = 2;              // switch is connected to pin 2
int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 11;
int led4Pin = 10;
int led5Pin = 9;
int led6Pin = 8;
int led7Pin = 7;
int led8Pin = 6;
int led9Pin = 5;
int led10Pin = 4;

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);
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT);
  pinMode(led9Pin, OUTPUT);
  pinMode(led10Pin, 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 waving 
                lightMode = 4;           // make it dubble wave!
              } else {
	        if (lightMode == 4) {      //  if its dubble waving
                  lightMode = 0;           // make it turn 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);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, LOW);  
  }

  if (lightMode == 1) { // all-on
    digitalWrite(led1Pin, HIGH);
    digitalWrite(led2Pin, HIGH);
    digitalWrite(led3Pin, HIGH);
    digitalWrite(led4Pin, HIGH);
    digitalWrite(led5Pin, HIGH);
    digitalWrite(led6Pin, HIGH);
    digitalWrite(led7Pin, HIGH);
    digitalWrite(led8Pin, HIGH);
    digitalWrite(led9Pin, HIGH);
    digitalWrite(led10Pin, HIGH);  
  }

  if (lightMode == 2) { // blinking
    digitalWrite(led1Pin, HIGH);
    digitalWrite(led2Pin, HIGH);
    digitalWrite(led3Pin, HIGH);
    digitalWrite(led4Pin, HIGH);
    digitalWrite(led5Pin, HIGH);
    digitalWrite(led6Pin, HIGH);
    digitalWrite(led7Pin, HIGH);
    digitalWrite(led8Pin, HIGH);
    digitalWrite(led9Pin, HIGH);
    digitalWrite(led10Pin, HIGH);    
    delay(500);
    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, LOW);    
    delay(500);
  }
  
  if (lightMode == 3)  { // "wave"
    digitalWrite(led10Pin, 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);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, HIGH);
    delay(50);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, HIGH);
    delay(50);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, HIGH);
    delay(50);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, HIGH);
    delay(50);
  }    
  
  if (lightMode == 4)  { // "dubble wave"
    digitalWrite(led1Pin, 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);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, HIGH);
    delay(50);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, HIGH);
    delay(50);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, HIGH);
    delay(50);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, HIGH);
    delay(50);
    digitalWrite(led10Pin, LOW);
    digitalWrite(led9Pin, HIGH);
    delay(50);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led8Pin, HIGH);
    delay(50);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led7Pin, HIGH);
    delay(50);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led6Pin, HIGH);
    delay(50);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led5Pin, HIGH);
    delay(50);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led4Pin, HIGH);
    delay(50);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led3Pin, HIGH);
    delay(50);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led2Pin, HIGH);
    delay(50);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led1Pin, HIGH);
    delay(50);  
  }
   
    }}}

  


User avatar
brimusw
 
Posts: 2
Joined: Sun Aug 07, 2011 12:15 am

Re: Please help

Post by brimusw »

Try the following (I do not have an arduino yet so could not test) --

Code: Select all


/*
* Bike light, final version
*/

int switchPin = 2; // switch is connected to pin 2
int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 11;
int led4Pin = 10;
int led5Pin = 9;
int led6Pin = 8;
int led7Pin = 7;
int led8Pin = 6;
int led9Pin = 5;
int led10Pin = 4;

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);
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT);
  pinMode(led9Pin, OUTPUT);
  pinMode(led10Pin, 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!
          digitalWrite(led1Pin, HIGH);
          digitalWrite(led2Pin, HIGH);
          digitalWrite(led3Pin, HIGH);
          digitalWrite(led4Pin, HIGH);
          digitalWrite(led5Pin, HIGH);
          digitalWrite(led6Pin, HIGH);
          digitalWrite(led7Pin, HIGH);
          digitalWrite(led8Pin, HIGH);
          digitalWrite(led9Pin, HIGH);
          digitalWrite(led10Pin, HIGH); 
        } else {
          if (lightMode == 1) { // if its all-on
            lightMode = 2; // make it blink!
            digitalWrite(led1Pin, HIGH);
            digitalWrite(led2Pin, HIGH);
            digitalWrite(led3Pin, HIGH);
            digitalWrite(led4Pin, HIGH);
            digitalWrite(led5Pin, HIGH);
            digitalWrite(led6Pin, HIGH);
            digitalWrite(led7Pin, HIGH);
            digitalWrite(led8Pin, HIGH);
            digitalWrite(led9Pin, HIGH);
            digitalWrite(led10Pin, HIGH); 
            delay(500);
            digitalWrite(led1Pin, LOW);
            digitalWrite(led2Pin, LOW);
            digitalWrite(led3Pin, LOW);
            digitalWrite(led4Pin, LOW);
            digitalWrite(led5Pin, LOW);
            digitalWrite(led6Pin, LOW);
            digitalWrite(led7Pin, LOW);
            digitalWrite(led8Pin, LOW);
            digitalWrite(led9Pin, LOW);
            digitalWrite(led10Pin, LOW); 
            delay(500);
          } else {
            if (lightMode == 2) { // if its blinking
              lightMode = 3; // make it wave!
              digitalWrite(led10Pin, 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);
              digitalWrite(led6Pin, LOW);
              digitalWrite(led7Pin, HIGH);
              delay(50);
              digitalWrite(led7Pin, LOW);
              digitalWrite(led8Pin, HIGH);
              delay(50);
              digitalWrite(led8Pin, LOW);
              digitalWrite(led9Pin, HIGH);
              delay(50);
              digitalWrite(led9Pin, LOW);
              digitalWrite(led10Pin, HIGH);
              delay(50);
            } else {
              if (lightMode == 3) { // if its waving 
                lightMode = 4; // make it dubble wave!
                digitalWrite(led1Pin, 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);
                digitalWrite(led6Pin, LOW);
                digitalWrite(led7Pin, HIGH);
                delay(50);
                digitalWrite(led7Pin, LOW);
                digitalWrite(led8Pin, HIGH);
                delay(50);
                digitalWrite(led8Pin, LOW);
                digitalWrite(led9Pin, HIGH);
                delay(50);
                digitalWrite(led9Pin, LOW);
                digitalWrite(led10Pin, HIGH);
                delay(50);
                digitalWrite(led10Pin, LOW);
                digitalWrite(led9Pin, HIGH);
                delay(50);
                digitalWrite(led9Pin, LOW);
                digitalWrite(led8Pin, HIGH);
                delay(50);
                digitalWrite(led8Pin, LOW);
                digitalWrite(led7Pin, HIGH);
                delay(50);
                digitalWrite(led7Pin, LOW);
                digitalWrite(led6Pin, HIGH);
                delay(50);
                digitalWrite(led6Pin, LOW);
                digitalWrite(led5Pin, HIGH);
                delay(50);
                digitalWrite(led5Pin, LOW);
                digitalWrite(led4Pin, HIGH);
                delay(50);
                digitalWrite(led4Pin, LOW);
                digitalWrite(led3Pin, HIGH);
                delay(50);
                digitalWrite(led3Pin, LOW);
                digitalWrite(led2Pin, HIGH);
                delay(50);
                digitalWrite(led2Pin, LOW);
                digitalWrite(led1Pin, HIGH);
                delay(50); 
              } else {
                if (lightMode == 4) { // if its dubble waving
                  lightMode = 0; // make it turn off!
                  digitalWrite(led1Pin, LOW);
                  digitalWrite(led2Pin, LOW);
                  digitalWrite(led3Pin, LOW);
                  digitalWrite(led4Pin, LOW);
                  digitalWrite(led5Pin, LOW);
                  digitalWrite(led6Pin, LOW);
                  digitalWrite(led7Pin, LOW);
                  digitalWrite(led8Pin, LOW);
                  digitalWrite(led9Pin, LOW);
                  digitalWrite(led10Pin, LOW); 
                }
              }
            }
          }
        }
        buttonState = val; // save the new state in our variable
      }
    }
  }
}


Spinsycle
 
Posts: 10
Joined: Sun Jul 31, 2011 4:21 pm

Re: Please help

Post by Spinsycle »

Thanks but it does the same thing. It go's to pattern 1 which is all led's on the does nothing else.

brimus
 
Posts: 13
Joined: Sun Aug 07, 2011 2:35 am

Re: Please help

Post by brimus »

Try this, I made a change to the if/else if/ else portion and removed some of the LED controls to make it shorted/easier to read. The LEDs should cycle thru one at a time. Once it is working you can make the changes to your original script.

Code: Select all

/*
* Bike light, final version
*/

int switchPin = 2; // switch is connected to pin 2
int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 11;
int led4Pin = 10;
int led5Pin = 9;
int led6Pin = 8;
int led7Pin = 7;
int led8Pin = 6;
int led9Pin = 5;
int led10Pin = 4;

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);
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT);
  pinMode(led9Pin, OUTPUT);
  pinMode(led10Pin, 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!
          digitalWrite(led1Pin, HIGH);
          digitalWrite(led5Pin, LOW);
        } else if (lightMode == 1) { // if its all-on
          lightMode = 2; // make it blink!
          digitalWrite(led2Pin, HIGH);
          digitalWrite(led1Pin, LOW);
        } else if (lightMode == 2) { // if its blinking
          lightMode = 3; // make it wave!
          digitalWrite(led3Pin, HIGH);
          digitalWrite(led2Pin, LOW);
        } else if (lightMode == 3) { // if its waving 
          lightMode = 4; // make it dubble wave!
           digitalWrite(led4Pin, HIGH);
          digitalWrite(led3Pin, LOW);
        } else if (lightMode == 4) { // if its dubble waving
          lightMode = 0; // make it turn off!
          digitalWrite(led5Pin, HIGH);
          digitalWrite(led4Pin, LOW);
         }
       }
     }
    buttonState = val; // save the new state in our variable
   }
 }




Spinsycle
 
Posts: 10
Joined: Sun Jul 31, 2011 4:21 pm

Re: Please help

Post by Spinsycle »

Thank you. I can now cycle through the different modes. I stayed with the same formatting and made 10 modes so it would go through all of the led's. It looks like now i am supposed to make the animations in the else if statement rather than referencing it in the else if and actually coding it in another place. when i tried that it wouldn't loop like in the original sample code. How do i get the animation to loop endlessly?

Code: Select all

 
/*
* Bike light, final version
*/

int switchPin = 2; // switch is connected to pin 2
int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 11;
int led4Pin = 10;
int led5Pin = 9;
int led6Pin = 8;
int led7Pin = 7;
int led8Pin = 6;
int led9Pin = 5;
int led10Pin = 4;

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);
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT);
  pinMode(led9Pin, OUTPUT);
  pinMode(led10Pin, 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!
          digitalWrite(led1Pin, HIGH);
          digitalWrite(led2Pin, HIGH);
          digitalWrite(led3Pin, HIGH);
          digitalWrite(led4Pin, HIGH);
          digitalWrite(led5Pin, HIGH);
          digitalWrite(led6Pin, HIGH);
          digitalWrite(led7Pin, HIGH);
          digitalWrite(led8Pin, HIGH);
          digitalWrite(led9Pin, HIGH);
          digitalWrite(led10Pin, HIGH);
        } else if (lightMode == 1) { // if its all-on
          lightMode = 2; // make it blink!
          digitalWrite(led1Pin, HIGH);
          digitalWrite(led2Pin, HIGH);
          digitalWrite(led3Pin, HIGH);
          digitalWrite(led4Pin, HIGH);
          digitalWrite(led5Pin, HIGH);
          digitalWrite(led6Pin, HIGH);
          digitalWrite(led7Pin, HIGH);
          digitalWrite(led8Pin, HIGH);
          digitalWrite(led9Pin, HIGH);
          digitalWrite(led10Pin, HIGH);
          delay(500);
          digitalWrite(led1Pin, LOW);
          digitalWrite(led2Pin, LOW);
          digitalWrite(led3Pin, LOW);
          digitalWrite(led4Pin, LOW);
          digitalWrite(led5Pin, LOW);
          digitalWrite(led6Pin, LOW);
          digitalWrite(led7Pin, LOW);
          digitalWrite(led8Pin, LOW);
          digitalWrite(led9Pin, LOW);
          digitalWrite(led10Pin, LOW);
          delay(500);
        } else if (lightMode == 2) { // if its blinking
          lightMode = 3; // make it wave!
          digitalWrite(led3Pin, HIGH);
          digitalWrite(led2Pin, LOW);
        } else if (lightMode == 3) { // if its waving 
          lightMode = 4; // make it dubble wave!
           digitalWrite(led4Pin, HIGH);
          digitalWrite(led3Pin, LOW);
        } else if (lightMode == 4) { // if its dubble waving
          lightMode = 5; // make it turn off!
          digitalWrite(led5Pin, HIGH);
          digitalWrite(led4Pin, LOW);
        } else if (lightMode == 5) { // if its all-on
          lightMode = 6; // make it blink!
          digitalWrite(led6Pin, HIGH);
          digitalWrite(led5Pin, LOW);
        } else if (lightMode == 6) { // if its blinking
          lightMode = 7; // make it wave!
          digitalWrite(led7Pin, HIGH);
          digitalWrite(led6Pin, LOW);
        } else if (lightMode == 7) { // if its waving 
          lightMode = 8; // make it dubble wave!
           digitalWrite(led8Pin, HIGH);
          digitalWrite(led7Pin, LOW);
        } else if (lightMode == 8) { // if its dubble waving
          lightMode = 9; // make it turn off!
          digitalWrite(led9Pin, HIGH);
          digitalWrite(led8Pin, LOW);
        } else if (lightMode == 9) { // if its waving 
          lightMode = 10; // make it dubble wave!
           digitalWrite(led10Pin, HIGH);
          digitalWrite(led9Pin, LOW);
        } else if (lightMode == 10) { // if its waving 
          lightMode = 0; // make it dubble wave!
           digitalWrite(led10Pin, LOW);

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

Spinsycle
 
Posts: 10
Joined: Sun Jul 31, 2011 4:21 pm

Re: Please help

Post by Spinsycle »

I found some other code i added to mine to add a potentiometer to control speed of animations. I somehow got a fourth pattern to work but now when i try to make a fifth animation using the same formatting it still does the same thing just go's to first pattern which is all on and wont go further. What an i doing wrong?

Code: Select all

/*
 *  Bike light revision
 */
 
int potPin = 0;                 // input pin for the pot
int timer = 50;
int timer2 = 500;
// you can adjust the numbers below to set the max and min for the speed adjustment
 int x = 10;        // sets the max speed (0 = fast) the lower the number the faster it can go
 int y = 1000;      // sets the min speed (100 = slow) the higher the number the slower it can go

int switchPin = 2;              // pattern select switch is connected to pin 2
int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 11;
int led4Pin = 10;
int led5Pin = 9;
int led6Pin = 8;
int led7Pin = 7;
int led8Pin = 6;
int led9Pin = 5;
int led10Pin = 4;

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);
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT);
  pinMode(led9Pin, OUTPUT);
  pinMode(led10Pin, 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
    timer = 0;
   for ( int i = 0; i < 10; i++ ) {    
     timer += analogRead (0);        // reads the pot and sets the timer to the value
   }
    timer = timer / 10;   
    timer = map(timer, 0, 1023, x, y);   // maps the timer value to the max and min values set above with x and y  
  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;               // make it all 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 waving, 
                lightMode = 4;         // make it dubble wave!
              } else {
                if (lightMode == 4) {  // if its dubble waving
                  lightMode = 0;       // make it reverse wave!

              }
			}
          }
        }
      }
    }
    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);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, LOW); 
  }
if (lightMode == 1) { // "all on"
    digitalWrite(led1Pin, HIGH);
    digitalWrite(led2Pin, HIGH);
    digitalWrite(led3Pin, HIGH);
    digitalWrite(led4Pin, HIGH);
    digitalWrite(led5Pin, HIGH);
    digitalWrite(led6Pin, HIGH);
    digitalWrite(led7Pin, HIGH);
    digitalWrite(led8Pin, HIGH);
    digitalWrite(led9Pin, HIGH);
    digitalWrite(led10Pin, HIGH); 
  }
if (lightMode == 2)  { // "blinking"
    digitalWrite(led1Pin, HIGH);
    digitalWrite(led2Pin, HIGH);
    digitalWrite(led3Pin, HIGH);
    digitalWrite(led4Pin, HIGH);
    digitalWrite(led5Pin, HIGH);
    digitalWrite(led6Pin, HIGH);
    digitalWrite(led7Pin, HIGH);
    digitalWrite(led8Pin, HIGH);
    digitalWrite(led9Pin, HIGH);
    digitalWrite(led10Pin, HIGH);    
    delay(timer2);
    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, LOW);    
    delay(timer2);
  }
  if (lightMode == 3)  { // "wave"
    digitalWrite(led10Pin, LOW);
    digitalWrite(led1Pin, HIGH);
    delay(timer);
    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, HIGH);
    delay(timer);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led3Pin, HIGH);
    delay(timer);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led4Pin, HIGH);
    delay(timer);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, HIGH);
    delay(timer);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led6Pin, HIGH);
    delay(timer);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, HIGH);
    delay(timer);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, HIGH);
    delay(timer);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, HIGH);
    delay(timer);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, HIGH);
    delay(timer);
   }    
  
   if (lightMode == 4)  { // "dubble wave"
     digitalWrite(led10Pin, LOW);
     digitalWrite(led1Pin, HIGH);
     delay(timer);
     digitalWrite(led1Pin, LOW);
     digitalWrite(led2Pin, HIGH);
     delay(timer);
     digitalWrite(led2Pin, LOW);
     digitalWrite(led3Pin, HIGH);
     delay(timer);
     digitalWrite(led3Pin, LOW);
     digitalWrite(led4Pin, HIGH);
     delay(timer);
     digitalWrite(led4Pin, LOW);
     digitalWrite(led5Pin, HIGH);
     delay(timer);
     digitalWrite(led5Pin, LOW);
     digitalWrite(led6Pin, HIGH);
     delay(timer);
     digitalWrite(led6Pin, LOW);
     digitalWrite(led7Pin, HIGH);
     delay(timer);
     digitalWrite(led7Pin, LOW);
     digitalWrite(led8Pin, HIGH);
     delay(timer);
     digitalWrite(led8Pin, LOW);
     digitalWrite(led9Pin, HIGH);
     delay(timer);
     digitalWrite(led9Pin, LOW);
     digitalWrite(led10Pin, HIGH);
     delay(timer);
     digitalWrite(led10Pin, LOW);
     digitalWrite(led9Pin, HIGH);
     delay(timer);
     digitalWrite(led9Pin, LOW);
     digitalWrite(led8Pin, HIGH);
     delay(timer);
     digitalWrite(led8Pin, LOW);
     digitalWrite(led7Pin, HIGH);
     delay(timer);
     digitalWrite(led7Pin, LOW);
     digitalWrite(led6Pin, HIGH);
     delay(timer);
     digitalWrite(led6Pin, LOW);
     digitalWrite(led5Pin, HIGH);
     delay(timer);
     digitalWrite(led5Pin, LOW);
     digitalWrite(led4Pin, HIGH);
     delay(timer);
     digitalWrite(led4Pin, LOW);
     digitalWrite(led3Pin, HIGH);
     delay(timer);
     digitalWrite(led3Pin, LOW);
     digitalWrite(led2Pin, HIGH);
     delay(timer);
     digitalWrite(led2Pin, LOW);
     digitalWrite(led1Pin, HIGH);
     delay(timer);
    }
    
    if (lightMode == 5)  { // "reverse wave"
     digitalWrite(led1Pin, LOW);
     digitalWrite(led10Pin, HIGH);
     delay(timer);
     digitalWrite(led10Pin, LOW);
     digitalWrite(led9Pin, HIGH);
     delay(timer);
     digitalWrite(led9Pin, LOW);
     digitalWrite(led8Pin, HIGH);
     delay(timer);
     digitalWrite(led8Pin, LOW);
     digitalWrite(led7Pin, HIGH);
     delay(timer);
     digitalWrite(led7Pin, LOW);
     digitalWrite(led6Pin, HIGH);
     delay(timer);
     digitalWrite(led6Pin, LOW);
     digitalWrite(led5Pin, HIGH);
     delay(timer);
     digitalWrite(led5Pin, LOW);
     digitalWrite(led4Pin, HIGH);
     delay(timer);
     digitalWrite(led4Pin, LOW);
     digitalWrite(led3Pin, HIGH);
     delay(timer);
     digitalWrite(led3Pin, LOW);
     digitalWrite(led2Pin, HIGH);
     delay(timer);
     digitalWrite(led2Pin, LOW);
     digitalWrite(led1Pin, HIGH);
     delay(timer);
  }    
}}

brimus
 
Posts: 13
Joined: Sun Aug 07, 2011 2:35 am

Re: Please help

Post by brimus »

You have a total of 6 light modes listed for the effects but you only with thru 5 (light modes 0-4). If you are having a problem with the light mode == 5 that is the issue if you have an issue with light mode == 4 then it is something else. light mode == 5 will never be executed as you stop at 4 and then cycle thru bad to 0.

I will be able to test and run the ketches later next week as I am ordering my hardware Friday. Until then I can only work with the compilation of the sketches which does not always show the problems. that along with being new to this unfortunately I can not be of more help, but it is educational for me.

Spinsycle
 
Posts: 10
Joined: Sun Jul 31, 2011 4:21 pm

Re: Please help

Post by Spinsycle »

I know that mode 5 will not function because there is no call to it. Thats because i got tired of deleting both parts every time i tried to go back and start over. When i put in the else if statement for the 5th mode thats when it breaks.

Spinsycle
 
Posts: 10
Joined: Sun Jul 31, 2011 4:21 pm

Re: Please help

Post by Spinsycle »

wow nobody knows how to make this code work?

User avatar
adafruit_support_bill
 
Posts: 88037
Joined: Sat Feb 07, 2009 10:11 am

Re: Please help

Post by adafruit_support_bill »

When i put in the else if statement for the 5th mode thats when it breaks.
Maybe if you show us the code you added we could see what was wrong with it.

User avatar
chuckm
 
Posts: 159
Joined: Thu Dec 24, 2009 3:31 am

Re: Please help

Post by chuckm »

Spin, I realize you've invested a lot of time into this project and I don't want you to feel in any way disrespected so I'm hesitant to help.

My suggestion for you is to consider using subroutines to break up your code into manageable, and more importantly testable, pieces. Then you can test each piece separately and then together.

Consider using an array to map your LED pins, so instead of

Code: Select all

int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 11;
int led4Pin = 10;
int led5Pin = 9;
int led6Pin = 8;
int led7Pin = 7;
int led8Pin = 6;
int led9Pin = 5;
int led10Pin = 4;
Consider writing this:

Code: Select all

int led_pins[] = { 13, 12, 11, 10, 9, 8, 7, 6, 5, 4};
Note that this starts numbering them at zero.

Then code like this:

Code: Select all

  pinMode(led1Pin, OUTPUT);
  pinMode(led2Pin, OUTPUT);
  pinMode(led3Pin, OUTPUT);
  pinMode(led4Pin, OUTPUT);
  pinMode(led5Pin, OUTPUT);
  pinMode(led6Pin, OUTPUT);
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT);
  pinMode(led9Pin, OUTPUT);
  pinMode(led10Pin, OUTPUT);
Can become code like this:

Code: Select all

int i;
for (i = 0; i < 10; i++) {
  pinMode(led_pin[i], OUTPUT);
}
Consider putting code which is ungainly and complex into its own subroutine, so the code that does all of the if/else stuff might reasonably be re-written:

Code: Select all

int
next_state(int old_state) {
    switch (old_state) {
        case 0: return 1;
        case 1: return 2;
        case 3: return 4;
        case 4: return 0;
        default: return 0; 
    }
}
Then you can write simply in your 'loop' :

Code: Select all

  lightMode = next_state(lightMode);
Its much simpler to read. You can even combine the button debouncing with that code into a subroutine called "handle_button" which would make your loop code even cleaner.

In several places you write:

Code: Select all

    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
     ...
You could write a subroutine like this:

Code: Select all

void
set_leds(int state, int *leds) {
    while (*leds++) {
        digitalWrite(*leds, state);
    }
}
Then your multiple digitalWrites would be condensed to:

Code: Select all

...
       all_leds[] = {13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 0}; // remember 0 at the end
       even_leds[] = {13, 11, 9, 7, 5, 0};
       odd_leds[] = {12, 10, 8, 6, 4, 0};

       if (mode == 0) {
            set_leds(LOW, all_leds);
       }

       if (mode == 1) {
           set_leds(HIGH, even_leds);
           set_leds(LOW, odd_leds};
       }
See how much more readable that is? When you make the code more readable it makes it easier for you (and others) to spot errors in the code.

--Chuck

Spinsycle
 
Posts: 10
Joined: Sun Jul 31, 2011 4:21 pm

Re: Please help

Post by Spinsycle »

Thank you for youre replies.

Thanks Chuck I will def look into array's. unfortunately its not easier for me too read but that because i am still so new to this. im sure it will make more sense to me as i understand it more.

and here is the code im using that does not work all it does is turns all led's on, nothing else not even turn off.

Code: Select all

/*
 *  Bike light revision
 */
 
int potPin = 0;                 // input pin for the pot
int timer = 50;
int timer2 = 500;
// you can adjust the numbers below to set the max and min for the speed adjustment
 int x = 10;        // sets the max speed (0 = fast) the lower the number the faster it can go
 int y = 1000;      // sets the min speed (100 = slow) the higher the number the slower it can go

int switchPin = 2;              // pattern select switch is connected to pin 2
int led1Pin = 13;
int led2Pin = 12;
int led3Pin = 11;
int led4Pin = 10;
int led5Pin = 9;
int led6Pin = 8;
int led7Pin = 7;
int led8Pin = 6;
int led9Pin = 5;
int led10Pin = 4;

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);
  pinMode(led7Pin, OUTPUT);
  pinMode(led8Pin, OUTPUT);
  pinMode(led9Pin, OUTPUT);
  pinMode(led10Pin, 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
    timer = 0;
   for ( int i = 0; i < 10; i++ ) {    
     timer += analogRead (0);        // reads the pot and sets the timer to the value
   }
    timer = timer / 10;   
    timer = map(timer, 0, 1023, x, y);   // maps the timer value to the max and min values set above with x and y  
  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;               // make it all 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 waving, 
                lightMode = 4;         // make it dubble wave!
              } else {
                if (lightMode == 4) {  // if its dubble waving
                  lightMode = 5;       // make it reverse wave!
                } else {
                  if (lightMode ==5) { 
                    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);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, LOW); 
  }
if (lightMode == 1) { // "all on"
    digitalWrite(led1Pin, HIGH);
    digitalWrite(led2Pin, HIGH);
    digitalWrite(led3Pin, HIGH);
    digitalWrite(led4Pin, HIGH);
    digitalWrite(led5Pin, HIGH);
    digitalWrite(led6Pin, HIGH);
    digitalWrite(led7Pin, HIGH);
    digitalWrite(led8Pin, HIGH);
    digitalWrite(led9Pin, HIGH);
    digitalWrite(led10Pin, HIGH); 
  }
if (lightMode == 2)  { // "blinking"
    digitalWrite(led1Pin, HIGH);
    digitalWrite(led2Pin, HIGH);
    digitalWrite(led3Pin, HIGH);
    digitalWrite(led4Pin, HIGH);
    digitalWrite(led5Pin, HIGH);
    digitalWrite(led6Pin, HIGH);
    digitalWrite(led7Pin, HIGH);
    digitalWrite(led8Pin, HIGH);
    digitalWrite(led9Pin, HIGH);
    digitalWrite(led10Pin, HIGH);    
    delay(timer2);
    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, LOW);    
    delay(timer2);
  }
  if (lightMode == 3)  { // "wave"
    digitalWrite(led10Pin, LOW);
    digitalWrite(led1Pin, HIGH);
    delay(timer);
    digitalWrite(led1Pin, LOW);
    digitalWrite(led2Pin, HIGH);
    delay(timer);
    digitalWrite(led2Pin, LOW);
    digitalWrite(led3Pin, HIGH);
    delay(timer);
    digitalWrite(led3Pin, LOW);
    digitalWrite(led4Pin, HIGH);
    delay(timer);
    digitalWrite(led4Pin, LOW);
    digitalWrite(led5Pin, HIGH);
    delay(timer);
    digitalWrite(led5Pin, LOW);
    digitalWrite(led6Pin, HIGH);
    delay(timer);
    digitalWrite(led6Pin, LOW);
    digitalWrite(led7Pin, HIGH);
    delay(timer);
    digitalWrite(led7Pin, LOW);
    digitalWrite(led8Pin, HIGH);
    delay(timer);
    digitalWrite(led8Pin, LOW);
    digitalWrite(led9Pin, HIGH);
    delay(timer);
    digitalWrite(led9Pin, LOW);
    digitalWrite(led10Pin, HIGH);
    delay(timer);
   }    
  
   if (lightMode == 4)  { // "dubble wave"
     digitalWrite(led10Pin, LOW);
     digitalWrite(led1Pin, HIGH);
     delay(timer);
     digitalWrite(led1Pin, LOW);
     digitalWrite(led2Pin, HIGH);
     delay(timer);
     digitalWrite(led2Pin, LOW);
     digitalWrite(led3Pin, HIGH);
     delay(timer);
     digitalWrite(led3Pin, LOW);
     digitalWrite(led4Pin, HIGH);
     delay(timer);
     digitalWrite(led4Pin, LOW);
     digitalWrite(led5Pin, HIGH);
     delay(timer);
     digitalWrite(led5Pin, LOW);
     digitalWrite(led6Pin, HIGH);
     delay(timer);
     digitalWrite(led6Pin, LOW);
     digitalWrite(led7Pin, HIGH);
     delay(timer);
     digitalWrite(led7Pin, LOW);
     digitalWrite(led8Pin, HIGH);
     delay(timer);
     digitalWrite(led8Pin, LOW);
     digitalWrite(led9Pin, HIGH);
     delay(timer);
     digitalWrite(led9Pin, LOW);
     digitalWrite(led10Pin, HIGH);
     delay(timer);
     digitalWrite(led10Pin, LOW);
     digitalWrite(led9Pin, HIGH);
     delay(timer);
     digitalWrite(led9Pin, LOW);
     digitalWrite(led8Pin, HIGH);
     delay(timer);
     digitalWrite(led8Pin, LOW);
     digitalWrite(led7Pin, HIGH);
     delay(timer);
     digitalWrite(led7Pin, LOW);
     digitalWrite(led6Pin, HIGH);
     delay(timer);
     digitalWrite(led6Pin, LOW);
     digitalWrite(led5Pin, HIGH);
     delay(timer);
     digitalWrite(led5Pin, LOW);
     digitalWrite(led4Pin, HIGH);
     delay(timer);
     digitalWrite(led4Pin, LOW);
     digitalWrite(led3Pin, HIGH);
     delay(timer);
     digitalWrite(led3Pin, LOW);
     digitalWrite(led2Pin, HIGH);
     delay(timer);
     digitalWrite(led2Pin, LOW);

    }
    
    if (lightMode == 5)  { // "reverse wave"
     digitalWrite(led1Pin, LOW);
     digitalWrite(led10Pin, HIGH);
     delay(timer);
     digitalWrite(led10Pin, LOW);
     digitalWrite(led9Pin, HIGH);
     delay(timer);
     digitalWrite(led9Pin, LOW);
     digitalWrite(led8Pin, HIGH);
     delay(timer);
     digitalWrite(led8Pin, LOW);
     digitalWrite(led7Pin, HIGH);
     delay(timer);
     digitalWrite(led7Pin, LOW);
     digitalWrite(led6Pin, HIGH);
     delay(timer);
     digitalWrite(led6Pin, LOW);
     digitalWrite(led5Pin, HIGH);
     delay(timer);
     digitalWrite(led5Pin, LOW);
     digitalWrite(led4Pin, HIGH);
     delay(timer);
     digitalWrite(led4Pin, LOW);
     digitalWrite(led3Pin, HIGH);
     delay(timer);
     digitalWrite(led3Pin, LOW);
     digitalWrite(led2Pin, HIGH);
     delay(timer);
     digitalWrite(led2Pin, LOW);
     digitalWrite(led1Pin, HIGH);
     delay(timer);
  }    
}}}

User avatar
adafruit_support_bill
 
Posts: 88037
Joined: Sat Feb 07, 2009 10:11 am

Re: Please help

Post by adafruit_support_bill »

The nesting levels of your curly braces '{' & '}' is not the same in the last two sketches you posted. That changes the logic considerably. Note the differences here:

Code: Select all

         digitalWrite(led1Pin, HIGH);
         delay(timer);
      }   
    }}
vs. here:

Code: Select all

         digitalWrite(led1Pin, HIGH);
         delay(timer);
      }   
    }}}
It would be a lot easier to spot such things if you take some of ChuckM's advice and re-structure the code into manageable pieces.

Spinsycle
 
Posts: 10
Joined: Sun Jul 31, 2011 4:21 pm

Re: Please help

Post by Spinsycle »

I am looking to simplify the code. I have been reading about array's for the past hour try'n to understand it. its only different because before i upload any code to the board i compile it and it gave me an error message. putting in the extra curly bracket got rid of the error message and let it compile

User avatar
adafruit_support_bill
 
Posts: 88037
Joined: Sat Feb 07, 2009 10:11 am

Re: Please help

Post by adafruit_support_bill »

Getting code to compile and getting the logic correct are not necessarily the same. You needed an extra curly brace because they need to be balanced overall. But the correct place to insert it was probably back where you inserted the extra if/else clause.

These things are really difficult to spot when they are nested so deeply. Things that will make the logic easier to follow are:
  • Use a 'switch' statement instead of a deeply nested if/else as suggested by ChuckM
    Be consistent about how you indent your code & braces.

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino Starter Pack”