Go Down

Topic: Multiple || in for loop? (Read 344 times) previous topic - next topic

RageRiot


Hello arduinians :)

I got my self an UNO on saturday and I've had some fun learning a shed loads about electronics and this is comming from an IT technician as it is my day job :)

I'm still in the beginner stages so I'm working with simple circuits still, in my current project I have 2 RGB leds and I wish to light up 2 colors on each so figured I'd modify my first bliking white code just blink ( or at least at this stage keep them on for testing.
my code was this
Code: [Select]
for(int i = 0; i < 6; i++)

and I changed it to this so I could basiclly ignore the green pins in my project.


Code: [Select]
void loop() {
  //I want 0 2 3 & 5
  for(int i = 0; i < 6 && i == 0 || 2 || 3 || 5; i++)
{
   digitalWrite(ledpins[i], 0);
}
}


I'm using 6 pins on PWM ( which I will later play with for fading) which goes to each color so my var ledpins is an array of 6 refering to each pins and 0 2 3 5 are red and blue.

I uploaded this code but it just light all of them up as if it ignores my OR operators but I'm guessing I'm using || wrong. I've tried a serach but havnt found any similar for loop

Thanks

RageRiot

AWOL

#1
Feb 28, 2012, 10:46 pm Last Edit: Feb 28, 2012, 10:50 pm by AWOL Reason: 1
Code: [Select]
i == 0 || 2 || 3 || 5
i == 0 is a comparison but
2
3
5
all evaluate to true, because they are all non-zero.
So, you expression evaluates to
Code: [Select]
i == 0 || true || true || true
and true OR x is always true.

A much simpler approach is to have an array for each of the pins controlling each colour:
Code: [Select]
const int greenPin [] = {0, 2, 3, 5};
and then a simple for loop to step through.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

RageRiot

Code: [Select]
for(int i = 0; i < 6 && i == 0 || i == 2 || i == 3 || i == 5; i++)

I tried this also assuming that was my mistake but it still the same result


AWOL

I think you've misunderstood what the condition in a for loop is there for.

It defines the condition for sustaining (or terminating) the loop - it's a binary proposition, and as soon as the condition is false, the loop terminates.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

RageRiot

I understand that now. thank you :D

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy