const int BUTTON = A1;
const int RLED = 10;
const int GLED = 9;
const int BLED = 8;
const unsigned long debouncePeriod = 20;
unsigned long startMillis;
unsigned long currentMillis;
unsigned long debounceStartMillis;
byte previousButtonState;
byte currentButtonState;
int count = 0;
bool debouncing = false;
void setup()
{
Serial.begin(115200);
pinMode(BUTTON, INPUT_PULLUP);
pinMode(RLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(BLED, OUTPUT);
startMillis = millis();
}
void ledMode(byte mode)
{
// Serial.println(mode);
switch (mode)
{
case 1:
digitalWrite(RLED, HIGH); //RED
digitalWrite(GLED, LOW);
digitalWrite(BLED, LOW);
delay(333);
break;
case 2:
digitalWrite(RLED, LOW); //GREEN
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
delay(333);
break;
case 3:
digitalWrite(RLED, LOW); //BLUE
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
delay(333);
break;
case 4:
digitalWrite(RLED, HIGH); //Yellow
digitalWrite(GLED, HIGH);
digitalWrite(BLED, LOW);
delay(333);
break;
case 5:
digitalWrite(RLED, LOW); //TEAL
digitalWrite(GLED, HIGH);
digitalWrite(BLED, HIGH);
delay(333);
break;
case 6:
digitalWrite(RLED, HIGH); //PURPLE
digitalWrite(GLED, LOW);
digitalWrite(BLED, HIGH);
delay(333);
break;
case 7:
digitalWrite(RLED, HIGH); //WHITE
digitalWrite(GLED, HIGH);
digitalWrite(BLED, HIGH);
delay(333);
break;
}
}
int RGBloop()
{
for (byte x = 1; x < 9; x++)
{
ledMode(x);
}
}
int RGBoff()
{
Serial.println("Turning off...");
digitalWrite(RLED, LOW);
digitalWrite(BLED, LOW);
digitalWrite(GLED, LOW);
}
void loop()
{
currentMillis = millis();
previousButtonState = currentButtonState;
currentButtonState = digitalRead(BUTTON);
if (currentButtonState != previousButtonState)
{
debouncing = true;
debounceStartMillis = currentMillis;
}
if (currentMillis - debounceStartMillis >= debouncePeriod)
{
if(debouncing == true)
{
if (currentButtonState == LOW)
{
debouncing = false;
count++;
Serial.println(count);
if (count % 2 == 0)
{
Serial.println("Turning off, yes.");
RGBoff();
}
else if (count % 2==1)
{
Serial.println("Running loop function.");
RGBloop();
}
}
}
}
}