Question

In: Computer Science

I am working on an Arduino Project. I would like to build a controllable RGB LED...

I am working on an Arduino Project. I would like to build a controllable RGB LED Nightlight (with a debounce code included). With each time pushing the button I want a different color. like the following

Initial state = LED off

first press= LED turns on Red

second Press = LED turns on Green

third Press = LED turns on Blue

Fourth Press = LED turns on Purple

Fifth Press = LED turns on Teal

sixth press= LED turns on Orange

7th press = LED turns on White

8th press = LED turns off again

if you put the comments with each line of the code, it will be highly appreciated.

Solutions

Expert Solution

//The code for nightlight LED is as shown below:

const int BLED=9; //Blue LED is connected Pin 9
const int GLED=10; //Green LED is connected Pin 10
const int RLED=11; //Red LED is connected Pin 11
const int BUTTON=2; // Button connected to pin 2
boolean lastButton = LOW; //To store the state of Last Button
boolean currentButton = LOW; //To store the state of Current Button
int ledMode = 0; //Cycle between LED states
void setup()
{ /* Here, in the setup method, we set the pins as input or output. All the three blue,red and green LED are set as output whereas Button is an input*/

pinMode (BLED, OUTPUT);
pinMode (GLED, OUTPUT);   
pinMode (RLED, OUTPUT);
pinMode (BUTTON, INPUT);

}
/*
* Here a Debouncing Function is used *The previous button state is passed,
* current debounced button state is noted.
*/
boolean debounce(boolean last)
{
boolean curr = digitalRead(BUTTON); //Here we read the state of button
if (last != current) //If they aren't the same
{
delay(5); //a 5ms delay is introduced
curr= digitalRead(BUTTON); //read again

}
return curr; //return the current button value

}
/*Here we set the LED colours as required. */

void setMode(int mode)
{ //To set RED colour, we disable the other LEDs

if (mode == 1)
{ digitalWrite(RLED, HIGH);

digitalWrite(GLED, LOW);

digitalWrite(BLED, LOW);

}

//To set GREEN colour, we disable the other LEDs

else if (mode == 2)
{ digitalWrite(RLED, LOW);

digitalWrite(GLED, HIGH);

digitalWrite(BLED, LOW);

}

// To set BLUE colour, disable other LEDs

else if (mode == 3)
{ digitalWrite(RLED, LOW);

digitalWrite(GLED, LOW);

digitalWrite(BLED, HIGH);

}

//As PURPLE is a combination of RED and BLUE, we provide values to both of them

else if (mode == 4)
{ analogWrite(RLED, 127);

analogWrite(GLED, 0);

analogWrite(BLED, 127);

}

//As TEAL is amixture of BLUE and GREEN, we provide values to both of them

else if (mode == 5)
{ analogWrite(RLED, 0);

analogWrite(GLED, 127);

analogWrite(BLED, 127);

}

//As ORANGE is a mixture of GREEN and RED,we provide values to both of them

else if (mode == 6)
{ analogWrite(RLED, 127);

analogWrite(GLED, 127);

analogWrite(BLED, 0);

}

//As WHITE is a mixture of GREEN and RED and BLUE,we provide values to all of them

else if (mode == 7)
{ analogWrite(RLED, 85);

analogWrite(GLED, 85);

analogWrite(BLED, 85);

}

//Off corresponds to mode 0, we set all the pins to low

else
{ digitalWrite(RLED, LOW);

digitalWrite(GLED, LOW);

digitalWrite(BLED, LOW);

}

}
void loop() //loop function is used for continuous execution of code
{

currentButton = debounce(lastButton); //read deboucned state

if (lastButton == LOW && currentButton == HIGH) //if the button was pressed…
{

ledMode++;

} //increment the LED value


lastButton = currentButton; //resetting button value

// reset the counter to 0 value, if all the different options are cycled.

if (ledMode == 8)

ledMode = 0;

setMode(ledMode); //change the LED state for starting it all over again

}

// Kindly upvote the answer, if it helped you.


Related Solutions

I am working on an accounting project related to a supermarket and would like to seek...
I am working on an accounting project related to a supermarket and would like to seek help with regard to its costing system. I was asked to describe the company’s costing system. I have identified supermarket as a value-added intermediary between suppliers and customers, but how do I classify or describe it's costing system since it does not manufacture its own product. Would there be a manufacturing cost incurred or I can only trace non-manufacturing costs to its products? I...
CODE WITH ARDUINO: With an RGB Led, Use the iterative loop (for loop) to make red,...
CODE WITH ARDUINO: With an RGB Led, Use the iterative loop (for loop) to make red, blue, and green. Use ‘analogWrite’ command inside the 'for loop.' Use the value ranges from 0-255 for this command. So, to activate any of the pins, the value should be 255. To turn off 0. pattern: First for loop Red light – delay – Second for loop for blue light – delay - Third for loop for green light - delay. (The resulting lights...
I am working on these questions but I would like someone to review them before I...
I am working on these questions but I would like someone to review them before I submit and add any addition information I may have missed or worse gotten wrong! I provided the questions and then my answers to them. 1) Explain what is blacklisting and whitelisting? 2) iptables: Compare -j DROP vs -j REJECT. Which option would you use to implement a firewall rule that blocks incoming packets and why? 3) State the iptables command you would use to...
i am working on a project.. i would love to implement ENERGY METERING WITH IT SO...
i am working on a project.. i would love to implement ENERGY METERING WITH IT SO AS TO BE ABLE TO CALCULATE THE BILLS AT THE END OF A CERTAIN PERIOD.. how could this be done...BULBS,FANS,SOCKETS are the appliances involved... how can i get the energy used by all this appliances. i need very DETAILED TECHNICAL EXPLANATION.
Hello guys i would to build a buck converter and use arduino PWM to control the...
Hello guys i would to build a buck converter and use arduino PWM to control the output voltage 12V to 8.4V any ideas ? thanks
I am working on a project for my Computer Science course. I am trying to create...
I am working on a project for my Computer Science course. I am trying to create a Battleship game where a user names two coordinates on a grid and is then told whether this results in a "Hit" or a "Miss". Once the ship has been hit a certain number of times (based on the size of the ship) the ship is sunk. I have written all the code but it now fails to execute when I try to run...
in arduino, having two LED lights, I need to find a way to turn one LED...
in arduino, having two LED lights, I need to find a way to turn one LED with the push of a button, then with a next push of the button turn off the first LED and turn the second LED on. Help with the circuit and code would be appreciated.
I'm working in Java and am working on a project where I need to find an...
I'm working in Java and am working on a project where I need to find an average. The catch is that for some of the values there is no data because they will be entered at a later date. I have variables assigned so that for each entry if there is an input I'll have it say _____available = 1, otherwise the variable will equal 0. I'll use an example to make this more clear. Let's say I am trying...
I am trying to get this code to work but I am having difficulties, would like...
I am trying to get this code to work but I am having difficulties, would like to see if some one can solve it. I tried to start it but im not sure what im doing wrong. please explain if possible package edu.hfcc; /* * Create Java application that will create Fruit class and Bread class * * Fruit class will have 3 data fields name and quantity which you can change. * The third data field price should always...
I am working on a project that requires a measurement of acceleration. I have a ADXL345...
I am working on a project that requires a measurement of acceleration. I have a ADXL345 accelerometer, an aduino and a MAX7219 dot matrix display. I need help setting up a code for my aduino to display the acceleration from the ADXL345 accelerometer onto the MAX7219 display. Please help!
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT