// Definição de pinos
const int sensorSom = 2; // Pino do sensor de som (digital)
const int led1 = 3; // LED 1 palma
const int led2 = 4; // LED 2 palmas
const int led3 = 5; // LED 3 palmas
const int led4 = 6; // LED 4 palmas
// Variáveis de controle
int palmas = 0;
unsigned long tempoUltimaPalma = 0;
const unsigned long intervalo = 1500; // tempo limite entre palmas (ms)
void setup() {
pinMode(sensorSom, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
Serial.begin(9600);
}
void loop() {
int somDetectado = digitalRead(sensorSom);
// Se o sensor detectar uma "palma"
if (somDetectado == HIGH) {
if (millis() - tempoUltimaPalma > 100) { // debounce simples
palmas++;
tempoUltimaPalma = millis();
Serial.print("Palmas detectadas: ");
Serial.println(palmas);
}
}
// Se passou tempo demais desde a última palma -> executar ação
if (millis() - tempoUltimaPalma > intervalo && palmas > 0) {
// Apaga todos os LEDs antes
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
// Aciona conforme a quantidade de palmas
switch (palmas) {
case 1:
digitalWrite(led1, HIGH);
break;
case 2:
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2, 0);
break;
case 3:
digitalWrite(led3, HIGH);
delay(1000);
digitalWrite(led3, 0);
break;
case 4:
digitalWrite(led4, HIGH);
delay(1000);
digitalWrite(led4, 0);
break;
default:
Serial.println("Mais de 4 palmas ignoradas");
break;
}
// Reseta contador
palmas = 0;
}
}