Go Down

Topic: LED fade issue (Read 205 times) previous topic - next topic

nkpchris2009

Hello All,

I am working on a model railway signal control and have decent progress made. However i am wanting to display a diverging aspect (Blinking yellow) so i have the code worked out but i need it to fade on and off. If i start Arduino with the series of buttons pressed to represent the aspect it fades flawlessly. But when i go from a different aspect to the blinking aspect the led goes to 255 and fades to 0, i need it to go from 0 to 255 back to 0 when ever the series of buttons is pressed.

here is the excerpt of code:

Code: [Select]
if (B3buttonState == DEACTIVE && B2buttonState == DEACTIVE && B1buttonState == DEACTIVE && Diverg1buttonState == ACTIVE) {  // Check Block 3
    digitalWrite(GreenledPin, LOW);
    analogWrite(YelledPin, brightness);
    if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;

Paul__B

And an excerpt is useful because?

nkpchris2009

Because this is the line of code I'm having a problem with.

PaulRB

Because this is the line of code I'm having a problem with.
If you are so certain you know what the problem is, why do you need our help?

Post the full sketch please.

nkpchris2009

Full code:

Code: [Select]
#define ACTIVE LOW
#define DEACTIVE HIGH
const int RedledPin = 8;   // Block 1 Red LED
const int YelledPin = 11;  // Block 1 Yellow LED
const int GreenledPin = 7; // Block 1 Green LED
int Block1button = 2;   // Block 1 input
int Block2button = 4;   // Block 2 input
int Block3button = 5;   // Block 3 input
int Diverg1button = 12;  // Switch on Diverging Button

int B1buttonState = 0;  // variable for reading Block 1
int B2buttonState = 0;  // variable for reading Block 2
int B3buttonState = 0;  // variable for reading Block 3
int Diverg1buttonState = 0;  // variable for reading Switch 1

int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

void setup() {
  pinMode(RedledPin, OUTPUT);    // declare Red LED as output
  pinMode(YelledPin, OUTPUT);    // declare Yellow LED as output
  pinMode(GreenledPin, OUTPUT);  // declare Green LED as output
  pinMode(Block1button, INPUT);  // declare Block 1 as input
  pinMode(Block2button, INPUT);  // declare Block 2 as input
  pinMode(Block3button, INPUT);  // declare Block 3 as input
  pinMode(Diverg1button, INPUT); // declare Diverg button as input
  digitalWrite(2,HIGH);    // Enable Pull-Up Resistor on Pin 2
  digitalWrite(4,HIGH);    // Enable Pull-Up Resistor on Pin 4
  digitalWrite(5,HIGH);    // Enable Pull-Up Resistor on Pin 5
  digitalWrite(12,HIGH);    // Enable Pull-Up Resistor on Pin 8
}

void loop(){
  B1buttonState = digitalRead(Block1button);  // read input Block 1
  B2buttonState = digitalRead(Block2button);  // read input Block 2
  B3buttonState = digitalRead(Block3button);  // read input Block 3
  Diverg1buttonState = digitalRead(Diverg1button);  // read input on Diverg Button
  brightness = brightness + fadeAmount;
 
  if (B1buttonState == DEACTIVE && B2buttonState == DEACTIVE && B3buttonState == DEACTIVE && Diverg1buttonState == DEACTIVE) { // Check Blocks 1,2,3
    digitalWrite(GreenledPin, HIGH);  // turn GREEN LED ON
  } else {
    digitalWrite(GreenledPin, LOW);  // turn GREEN LED OFF
  }
  if (B1buttonState == ACTIVE && B2buttonState == DEACTIVE && B3buttonState == DEACTIVE) {   // Check Block 1
    digitalWrite(RedledPin, HIGH);  // turn LED ON
  } else {
    digitalWrite(RedledPin, LOW);  // turn LED OFF
  }
  if (B2buttonState == ACTIVE && B1buttonState == DEACTIVE && B3buttonState == DEACTIVE) {   // Check Block 2
    digitalWrite(RedledPin, HIGH);   // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);    // turn off Red LED
  }
  if (B1buttonState == ACTIVE && B2buttonState == ACTIVE && B3buttonState == DEACTIVE) {    //Check Blocks 1 & 2
    digitalWrite(RedledPin, HIGH);  // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);   // turn Red LED OFF
  }
  if (B3buttonState == ACTIVE && B2buttonState == ACTIVE && B1buttonState == DEACTIVE) {   // Check Blocks 2 & 3
    digitalWrite(RedledPin, HIGH);  // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);   // turn off Red LED 
  }
  if (B3buttonState == ACTIVE && B2buttonState == DEACTIVE && B1buttonState == DEACTIVE) {  // Check Block 3
    digitalWrite(YelledPin, HIGH);  // turn on Yellow LED
  } else {
    digitalWrite(YelledPin, LOW);   // turn off Yellow LED
  }
  if (B1buttonState == ACTIVE && B2buttonState == DEACTIVE && B3buttonState == ACTIVE) {    // Approach Block 1
    digitalWrite(RedledPin, HIGH);  // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);   // turn off Red LED
  }
  if (B1buttonState == ACTIVE && B2buttonState == ACTIVE && B3buttonState == ACTIVE) {    // All 3 blocks Occ.
    digitalWrite(RedledPin, HIGH);  // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);   // turn off Red LED
  }
  if (B3buttonState == DEACTIVE && B2buttonState == DEACTIVE && B1buttonState == DEACTIVE && Diverg1buttonState == ACTIVE) {  // Check Block 3
    digitalWrite(GreenledPin, LOW);
    analogWrite(YelledPin, brightness);
    if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
    }
    delay(35); // wait for 30 milliseconds to see the dimming effect
  }
  if (B3buttonState == DEACTIVE && B2buttonState == ACTIVE && B1buttonState == DEACTIVE && Diverg1buttonState == ACTIVE) {  // Check Block 3
    analogWrite(YelledPin, brightness);
    if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
    }
    delay(30); // wait for 30 milliseconds to see the dimming effect
  }
  if (B3buttonState == DEACTIVE && B2buttonState == ACTIVE && B1buttonState == ACTIVE && Diverg1buttonState == ACTIVE) {  // Check Block 3
    analogWrite(YelledPin, brightness);
    if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
    }
    delay(30); // wait for 30 milliseconds to see the dimming effect
  }
}

PaulRB

Try this:

Code: [Select]
#define ACTIVE LOW
#define DEACTIVE HIGH
const int RedledPin = 8;   // Block 1 Red LED
const int YelledPin = 11;  // Block 1 Yellow LED
const int GreenledPin = 7; // Block 1 Green LED
int Block1button = 2;   // Block 1 input
int Block2button = 4;   // Block 2 input
int Block3button = 5;   // Block 3 input
int Diverg1button = 12;  // Switch on Diverging Button

int B1buttonState = 0;  // variable for reading Block 1
int B2buttonState = 0;  // variable for reading Block 2
int B3buttonState = 0;  // variable for reading Block 3
int Diverg1buttonState = 0;  // variable for reading Switch 1

int brightness = 0;    // how bright the LED is
int fadeAmount = 5;    // how many points to fade the LED by

void setup() {
  pinMode(RedledPin, OUTPUT);    // declare Red LED as output
  pinMode(YelledPin, OUTPUT);    // declare Yellow LED as output
  pinMode(GreenledPin, OUTPUT);  // declare Green LED as output
  pinMode(Block1button, INPUT);  // declare Block 1 as input
  pinMode(Block2button, INPUT);  // declare Block 2 as input
  pinMode(Block3button, INPUT);  // declare Block 3 as input
  pinMode(Diverg1button, INPUT); // declare Diverg button as input
  digitalWrite(2, HIGH);   // Enable Pull-Up Resistor on Pin 2
  digitalWrite(4, HIGH);   // Enable Pull-Up Resistor on Pin 4
  digitalWrite(5, HIGH);   // Enable Pull-Up Resistor on Pin 5
  digitalWrite(12, HIGH);   // Enable Pull-Up Resistor on Pin 8
}

void loop() {
  B1buttonState = digitalRead(Block1button);  // read input Block 1
  B2buttonState = digitalRead(Block2button);  // read input Block 2
  B3buttonState = digitalRead(Block3button);  // read input Block 3
  Diverg1buttonState = digitalRead(Diverg1button);  // read input on Diverg Button

  if (B1buttonState == DEACTIVE && B2buttonState == DEACTIVE && B3buttonState == DEACTIVE && Diverg1buttonState == DEACTIVE) { // Check Blocks 1,2,3
    digitalWrite(GreenledPin, HIGH);  // turn GREEN LED ON
  } else {
    digitalWrite(GreenledPin, LOW);  // turn GREEN LED OFF
  }
  if (B1buttonState == ACTIVE && B2buttonState == DEACTIVE && B3buttonState == DEACTIVE) {   // Check Block 1
    digitalWrite(RedledPin, HIGH);  // turn LED ON
  } else {
    digitalWrite(RedledPin, LOW);  // turn LED OFF
  }
  if (B2buttonState == ACTIVE && B1buttonState == DEACTIVE && B3buttonState == DEACTIVE) {   // Check Block 2
    digitalWrite(RedledPin, HIGH);   // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);    // turn off Red LED
  }
  if (B1buttonState == ACTIVE && B2buttonState == ACTIVE && B3buttonState == DEACTIVE) {    //Check Blocks 1 & 2
    digitalWrite(RedledPin, HIGH);  // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);   // turn Red LED OFF
  }
  if (B3buttonState == ACTIVE && B2buttonState == ACTIVE && B1buttonState == DEACTIVE) {   // Check Blocks 2 & 3
    digitalWrite(RedledPin, HIGH);  // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);   // turn off Red LED
  }
  if (B3buttonState == ACTIVE && B2buttonState == DEACTIVE && B1buttonState == DEACTIVE) {  // Check Block 3
    digitalWrite(YelledPin, HIGH);  // turn on Yellow LED
  } else {
    digitalWrite(YelledPin, LOW);   // turn off Yellow LED
  }
  if (B1buttonState == ACTIVE && B2buttonState == DEACTIVE && B3buttonState == ACTIVE) {    // Approach Block 1
    digitalWrite(RedledPin, HIGH);  // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);   // turn off Red LED
  }
  if (B1buttonState == ACTIVE && B2buttonState == ACTIVE && B3buttonState == ACTIVE) {    // All 3 blocks Occ.
    digitalWrite(RedledPin, HIGH);  // turn on Red LED
  } else {
    digitalWrite(RedledPin, LOW);   // turn off Red LED
  }
  if (B3buttonState == DEACTIVE && B2buttonState == DEACTIVE && B1buttonState == DEACTIVE && Diverg1buttonState == ACTIVE) {  // Check Block 3
    digitalWrite(GreenledPin, LOW);
    brightness = brightness + fadeAmount;
    analogWrite(YelledPin, brightness);
    if (brightness == 0 || brightness == 255) {
      fadeAmount = -fadeAmount ;
    }
    delay(35); // wait for 30 milliseconds to see the dimming effect
  }
  if (B3buttonState == DEACTIVE && B2buttonState == ACTIVE && B1buttonState == DEACTIVE && Diverg1buttonState == ACTIVE) {  // Check Block 3
    brightness = brightness + fadeAmount;
    analogWrite(YelledPin, brightness);
    if (brightness == 0 || brightness == 255) {
      fadeAmount = -fadeAmount ;
    }
    delay(30); // wait for 30 milliseconds to see the dimming effect
  }
  if (B3buttonState == DEACTIVE && B2buttonState == ACTIVE && B1buttonState == ACTIVE && Diverg1buttonState == ACTIVE) {  // Check Block 3
    brightness = brightness + fadeAmount;
    analogWrite(YelledPin, brightness);
    if (brightness == 0 || brightness == 255) {
      fadeAmount = -fadeAmount ;
    }
    delay(30); // wait for 30 milliseconds to see the dimming effect
  }
}

Paul__B

Because this is the line of code I'm having a problem with.
Well, you learned something today, didn't you?

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