#define ledR 9
#define ledG 10
#define ledB 11
#define btn 2
int ciclo = 0;
int cont = -1; //comece do -1 para deixar o sketch de loop primeiro
void ledRed() {
analogWrite(ledR, 255);
analogWrite(ledG, 0);
analogWrite(ledB, 0);
}
void ledGreen() {
analogWrite(ledR, 0);
analogWrite(ledG, 255);
analogWrite(ledB, 0);
}
void ledBlue() {
analogWrite(ledR, 0);
analogWrite(ledG, 0);
analogWrite(ledB, 255);
}
void ledYellow() {
analogWrite(ledR, 255);
analogWrite(ledG, 255);
analogWrite(ledB, 0);
}
void ledColor1() {
analogWrite(ledR, 255);
analogWrite(ledG, 0);
analogWrite(ledB, 255);
}
void ledColor2() {
analogWrite(ledR, 0);
analogWrite(ledG, 255);
analogWrite(ledB, 255);
}
void all_Off() {
analogWrite(ledR, 0);
analogWrite(ledG, 0);
analogWrite(ledB, 0);
}
void setup() {
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(btn, INPUT_PULLUP);
all_Off();
}
void loop() {
if (digitalRead(btn) == LOW) { //verifica se o botão está pressionado
for (int i = 0; i < 6; i++) {
switch (ciclo) {
case 0:
ledRed();
break;
case 1:
ledGreen();
break;
case 2:
ledBlue();
break;
case 3:
ledYellow();
break;
case 4:
ledColor1();
break;
case 5:
ledColor2();
break;
}
delay(3000);
ciclo = (ciclo + 1) % 6;
if (digitalRead(btn) == HIGH) {//verifica se o botão foi solto
all_Off();
return;
}
}
} else {//desligar o led quando o botão não estiver pressionado
all_Off();
if (digitalRead(btn) == LOW) {
cont++; //incrementa o cont a cada pressão
delay(200);
for (int i = 0; i < cont; i++) {
ledRed(); //piscar o led vermelho
delay(500);
all_Off();
delay(500);
}
}
}
}