//Definir los pines de los LEDs RGB
#define ledRojo1 9
#define ledVerde1 10
#define ledAzul1 11
#define ledRojo2 6
#define ledVerde2 5
#define ledAzul2 4
//Definir el pin del pulsador
#define pulsadorPin 2
//Definir el pin del buzzer
#define buzzerPin 8
//Variables para almacenar el estado del pulsador y LEDs RGB
int pulsadorEstado = 0;
int pulsadorUltimoEstado = 0;
int colorIndex = 0;
void setup() {
//Inicializar los pines de los LEDs como salidas
pinMode(ledRojo1, OUTPUT);
pinMode(ledVerde1, OUTPUT); // Corrected OUPUT to OUTPUT
pinMode(ledAzul1, OUTPUT);
pinMode(ledRojo2, OUTPUT);
pinMode(ledVerde2, OUTPUT); // Corrected OUPUT to OUTPUT
pinMode(ledAzul2, OUTPUT);
//Inicializar el pulsador y el buzzer
pinMode(pulsadorPin, INPUT_PULLUP);
pinMode(buzzerPin, OUTPUT); // Corrected busserPin to buzzerPin
// Set initial color and sound when the sketch starts
cambiarColor(colorIndex);
reproducirSonido(colorIndex);
}
void loop() {
pulsadorEstado = digitalRead(pulsadorPin);
//Detectar un cambio de estado en el pulsador
// We want to detect a press (LOW) when the last state was HIGH
if (pulsadorEstado == LOW && pulsadorUltimoEstado == HIGH) { // Corrected logic for button press detection
colorIndex = (colorIndex + 1) % 5;
cambiarColor(colorIndex);
reproducirSonido(colorIndex);
delay(200); //Antirrebote
}
pulsadorUltimoEstado = pulsadorEstado;
}
//Función para cambiar el color de los LEDs
void cambiarColor(int color) {
switch (color) {
case 0: // Fucsia
analogWrite(ledRojo1, 251);
analogWrite(ledVerde1, 150);
analogWrite(ledAzul1, 229);
analogWrite(ledRojo2, 251);
analogWrite(ledVerde2, 150);
analogWrite(ledAzul2, 229);
break;
case 1: // Violeta
analogWrite(ledRojo1, 166);
analogWrite(ledVerde1, 57);
analogWrite(ledAzul1, 241);
analogWrite(ledRojo2, 166);
analogWrite(ledVerde2, 57);
analogWrite(ledAzul2, 241);
break;
case 2: // Azul
analogWrite(ledRojo1, 172);
analogWrite(ledVerde1, 196);
analogWrite(ledAzul1, 247);
analogWrite(ledRojo2, 172);
analogWrite(ledVerde2, 196);
analogWrite(ledAzul2, 247);
break;
case 3: // Celeste
analogWrite(ledRojo1, 172);
analogWrite(ledVerde1, 244);
analogWrite(ledAzul1, 247);
analogWrite(ledRojo2, 172);
analogWrite(ledVerde2, 244);
analogWrite(ledAzul2, 247);
break;
case 4: // Verde
analogWrite(ledRojo1, 214);
analogWrite(ledVerde1, 252);
analogWrite(ledAzul1, 147);
analogWrite(ledRojo2, 214);
analogWrite(ledVerde2, 252);
analogWrite(ledAzul2, 147);
break;
}
}
//Función para reproducir sonido según el color
void reproducirSonido(int color) {
switch (color) {
case 0: // fucsia
tone(buzzerPin, 262); // Note C4
break;
case 1: // Violeta
tone(buzzerPin, 294); // Note D4
break;
case 2: // Azul
tone(buzzerPin, 330); // Note E4
break;
case 3: // Celeste
tone(buzzerPin, 349); // Note F4
break;
case 4: // Verde
tone(buzzerPin, 392); // Note G4
break;
}
delay(500); // Play the tone for 500ms
noTone(buzzerPin); // Stop the tone after 500ms
}