Go Down

Topic: RGB LED Program (Read 499 times) previous topic - next topic

s_tanay

Code: [Select]
const int button1Pin = 2;  // pushbutton 1 pin
const int button2Pin = 3;  // pushbutton 2 pin
const int ledPin =  13;    // LED pin
const int LED3 = 10;

void setup()
{
  // Set up the pushbutton pins to be an input:
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);

  // Set up the LED pin to be an output:
  pinMode(ledPin, OUTPUT);     
}


void loop()
{
  int button1State, button2State;  // variables to hold the pushbutton states

  // Since a pushbutton has only two states (pushed or not pushed),
  // we've run them into digital inputs. To read an input, we'll
  // use the digitalRead() function. This function takes one
  // parameter, the pin number, and returns either HIGH (5V)
  // or LOW (GND).

  // Here we'll read the current pushbutton states into
  // two variables:

  button1State = digitalRead(button1Pin);
  button2State = digitalRead(button2Pin);

  // Remember that if the button is being pressed, it will be
  // connected to GND. If the button is not being pressed,
  // the pullup resistor will connect it to 5 Volts.

  // So the state will be LOW when it is being pressed,
  // and HIGH when it is not being pressed.
 
  // Now we'll use those states to control the LED.
  // Here's what we want to do:
 
  // "If either button is being pressed, light up the LED"
  // "But, if BOTH buttons are being pressed, DON'T light up the LED"
 
  // Let's translate that into computer code. The Arduino gives you
  // special logic functions to deal with true/false logic:
 
  // A == B means "EQUIVALENT". This is true if both sides are the same.
  // A && B means "AND". This is true if both sides are true.
  // A || B means "OR". This is true if either side is true.
  // !A means "NOT". This makes anything after it the opposite (true or false).
 
  // We can use these operators to translate the above sentences
  // into logic statements (Remember that LOW means the button is
  // being pressed)
 
  // "If either button is being pressed, light up the LED"
  // becomes:
  // if ((button1State == LOW) || (button2State == LOW)) // light the LED
 
  // "If BOTH buttons are being pressed, DON'T light up the LED"
  // becomes:
  // if ((button1State == LOW) && (button2State == LOW)) // don't light the LED

  // Now let's use the above functions to combine them into one statement:
 
  if (((button1State == LOW) || (button2State == LOW))  // if we're pushing button 1 OR button 2
      && !                                               // AND we're NOT
      ((button1State == LOW) && (button2State == LOW))) // pushing button 1 AND button 2
                                                        // then...
  {
    digitalWrite(ledPin, HIGH);  // turn the LED on
    digitalWrite(LED3, HIGH);
    delay(500);
}
 
  else
  {
    digitalWrite(ledPin, LOW);  // turn the LED off
    digitalWrite(LED3, LOW);
   
}
     
  // As you can see, logic operators can be combined to make
  // complex decisions!

  // Don't forget that we use = when we're assigning a value,
  // and use == when we're testing a value for equivalence.
}



Here, I have a simple program that works perfectly fine. It turns on a LED light when either of two push buttons are pressed. My question is, I wanted to change the color of a RGB LED light with a push button. For example, when it the button is pressed, it will turn green, pressed again, it will turn blue etc.

Please help, I searched google and got nothing, just more complicated projects such as RFID LED light cubes (what is that??)

s_tanay

many people are look at this post, yet no one is replying????

Grumpy_Mike


many people are look at this post, yet no one is replying????

Because the question is very vague.

Look at the State change detection example in the File -> Examples -> 02 Digital
Use button pushes to increment a count.
use the vale of that count to turn on what LEDs you want.

Don't post code that is full of totally irrelevant comments.

K5CZ


My question is, I wanted to change the color of a RGB LED light with a push button.


You must connect R to pinX , G to pinY , and B to pinZ (X, Y and Z - any digital output pins), see here for my solution:
Garage door alarm project
Arduino Uno R3, Arduino Mega 2560 R3, Ethermega (R3), and some Ethernet Shields (R3), Chronodots, TMP36 sensors, DS18B20 sensors, LCDs/TFTs, RS232C to learn and play...

AWOL

Why are you waggling the built-in pullup on pin "LED3" ?
"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.

s_tanay

Code: [Select]
int redLEDPin = 11;
int greenLEDPin = 10;
int blueLEDPin = 9;

int redSwitchPin = 7;
int greenSwitchPin = 6;
int blueSwitchPin = 5;

int red = 0;
int blue = 0;
int green = 0;

void setup()
{
  pinMode(redLEDPin, OUTPUT);
  pinMode(greenLEDPin, OUTPUT);
  pinMode(blueLEDPin, OUTPUT); 
  pinMode(redSwitchPin, INPUT_PULLUP);
  pinMode(greenSwitchPin, INPUT_PULLUP);
  pinMode(blueSwitchPin, INPUT_PULLUP);
}

void loop()
{
  if (digitalRead(redSwitchPin) == LOW)
  {
    red ++;
    if (red > 255) red = 0;
  }
  if (digitalRead(greenSwitchPin) == LOW)
  {
    green ++;
    if (green > 255) green = 0;
  }
  if (digitalRead(blueSwitchPin) == LOW)
  {
    blue ++;
    if (blue > 255) blue = 0;
  }
  analogWrite(redLEDPin, red);
  analogWrite(greenLEDPin, green);
  analogWrite(blueLEDPin, blue); 
  delay(10);
}


here is a code for changing the light intesity that I came up with. I actually wanted to change color but instead it changes the intensity of the light
I am sorry if I had made any rude comments.

Nick Gammon


many people are look at this post, yet no one is replying????


Quote

   
RGB LED Program
« on: September 06, 2013, 10:08:32 pm »
...
« Reply #1 on: September 06, 2013, 10:19:24 pm »


That is truly shocking. A whole 11 minutes have elapsed, and no reply! No wonder you bumped the thread.

How to use this forum

Now read point 13. Forum etiquette.
Please post technical questions on the forum, not by personal message. Thanks!

More info:
http://www.gammon.com.au/electronics

Grumpy_Mike

Replace:-
Code: [Select]

red ++;

With:-
Code: [Select]

red += random(20);


Similarly
Code: [Select]

// green ++;
green += random(25);
...........
//blue ++;
blue += random(30);



Finally add this line in the setup function
Code: [Select]

randomSeed(analogRead(0));


Go Up