Here is my current code ( I am a beginner) -
(I want to make it switch between each mode every second, for example:
if ( lastButton == LOW && currentButton == LOW)
{
delay (1000);
ledMode++;
}
But, I want the mode to switch to ledMode=0; once I pressed the button. However, what happened was it only worked when I held it, not when I pressed it.
const int BLED=9; //Blue LED Anode on Pin 9
const int GLED=10; //Green LED Anode on Pin 10
const int RLED=11; //Red LED Anode on Pin 11
const int BUTTON=2; //The button is connected on pin 2
boolean lastButton = LOW; //Last Button State
boolean currentButton = LOW; //Current Button State
int ledMode = 0; //Cycle between LED states
void setup()
{
pinMode (BLED, OUTPUT); //Set Blue LED as output
pinMode (GLED, OUTPUT); //Set Green LED as output
pinMode (RLED, OUTPUT); //Set Red LED as output
pinMode (BUTTON, INPUT); //(**Not required**)
}
boolean debounce(boolean last)
{
boolean current= digitalRead(BUTTON); //Read the button state
if (last != current); //If it defers
{
delay(5); //Wait 5ms
current = digitalRead(BUTTON); //Read the button state again
}
return current; //Return the current button value
}
void setMode(int mode)
{
//Red
if (mode == 1)
{
digitalWrite(RLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}
//Green
else if (mode == 2)
{
digitalWrite (RLED,LOW);
digitalWrite (GLED, HIGH);
digitalWrite (BLED, LOW);
}
//Blue
else if (mode == 3 )
{
digitalWrite (RLED, LOW);
digitalWrite (GLED, LOW);
digitalWrite (BLED, HIGH);
}
//Purple (BLUE+RED)
else if (mode == 4)
{
digitalWrite (RLED, HIGH);
digitalWrite (GLED, LOW);
digitalWrite (BLED, HIGH);
}
//Teal (BLUE+GREEN
else if (mode ==5)
{
digitalWrite (RLED, LOW);
digitalWrite (GLED, HIGH);
digitalWrite (BLED, HIGH);
}
//Orange (GREEN+RED)
else if (mode ==6)
{
digitalWrite (RLED, HIGH);
digitalWrite (BLED, LOW);
digitalWrite (GLED, HIGH);
}
//White (ALL)
else if (mode == 7)
{
digitalWrite (RLED, HIGH);
digitalWrite (BLED, HIGH);
digitalWrite (GLED, HIGH );
}
//OFF (mode = 0)
else
{
digitalWrite(RLED, LOW);
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
}
}
void loop()
{
currentButton = debounce (lastButton);
lastButton = currentButton;
if (ledMode == 8) ledMode=0;
setMode(ledMode);
}