![]()
int buttonStatePrevious = LOW;
unsigned long minButtonLongPressDuration = 500;
unsigned long buttonLongPressMillis;
bool buttonStateLongPress = false;
const int intervalButton = 50;
unsigned long previousButtonMillis;
unsigned long buttonPressDuration;
int R = 11;
int G = 10;
int B = 9;
int RR = 6;
int GG = 5;
int BB = 3;
int buttonPin = 2;
unsigned long currentMillis;
int old = 0;
int old_1 = 0;
int state = 0;
int state_1 = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(R, OUTPUT); // set arduino pin to output mode
pinMode(G, OUTPUT);
pinMode(B, OUTPUT);
pinMode(RR, OUTPUT); // set arduino pin to output mode
pinMode(GG, OUTPUT);
pinMode(BB, OUTPUT);
}
void loop() {
currentMillis = millis();
if(currentMillis - previousButtonMillis > intervalButton) {
int buttonState = digitalRead(buttonPin);
if (buttonState == HIGH && buttonStatePrevious == LOW && !buttonStateLongPress) {
buttonLongPressMillis = currentMillis;
buttonStatePrevious = HIGH;
}
buttonPressDuration = currentMillis - buttonLongPressMillis;
if(buttonState == HIGH && !buttonStateLongPress && buttonPressDuration >= minButtonLongPressDuration) {
buttonStateLongPress = true;
state_1 = old_1 + 1;
while(state_1){
analogWrite(RR, 255);
analogWrite(GG, 255);
analogWrite(BB, 0);
analogWrite(R, 0);
analogWrite(G, 255);
analogWrite(B, 255);
delay(200);
analogWrite(RR, 255);
analogWrite(GG, 255);
analogWrite(BB, 255);
analogWrite(R, 255);
analogWrite(G, 255);
analogWrite(B, 255);
delay(500);
analogWrite(RR, 0);
analogWrite(GG, 255);
analogWrite(BB, 255);
analogWrite(R, 255);
analogWrite(G, 255);
analogWrite(B, 0);
delay(200);
old_1 = state_1 ;
}
}
if (buttonState == LOW && buttonStatePrevious == HIGH) {
buttonStatePrevious = LOW;
buttonStateLongPress = false;
if (!buttonStateLongPress && buttonPressDuration < minButtonLongPressDuration) {
state = old + 1;
Serial.println(state);
switch(state){
case 1:
analogWrite(RR, 0);
analogWrite(GG, 255);
analogWrite(BB, 255);
analogWrite(R, 0);
analogWrite(G, 255);
analogWrite(B, 255);
old = state;
break;
case 2:
analogWrite(RR, 255);
analogWrite(GG, 0);
analogWrite(BB, 255);
analogWrite(R, 255);
analogWrite(G, 0);
analogWrite(B, 255);
old = state;
break;
case 3:
analogWrite(RR, 255);
analogWrite(GG, 255);
analogWrite(BB, 0);
analogWrite(R, 255);
analogWrite(G, 255);
analogWrite(B, 0);
old = state;
break;
default:
analogWrite(GG, 255);
analogWrite(BB, 255);
analogWrite(R, 255);
analogWrite(G, 255);
analogWrite(B, 255);
old =0;
break;
}
}
}
previousButtonMillis = currentMillis;
}
}