/*PROYECTO 

Elementos: 
- Potenciómetro analógico
- Sensor de fotoresistor
- Led RGB Cátodo (si es ánodo hacer modificación)
- Zumbador
- Protoboard

Si es de noche, vamos a escuchar un zumbido. Cuando sea de día con el 
potenciómetro podremos regular los colores.

*/
int rojo = 3;             // Pin para el LED Rojo
int verde = 5;            // Pin para el LED Verde
int azul = 6;             // Pin para el LED Azul
int potenciometroPin = A0; // Pin analógico para el potenciómetro
int fotoresistorPin = A1;  // Pin analógico para el fotoresistor
long valorPoten;           // Variable donde está el valor del potenciómetro
int zumbadorPin = 9;       // Pin para el zumbador

void setup() {
  // Inicializo pines como entrada o salida
  // Seteo el Led RGB
  pinMode(rojo, OUTPUT);
  pinMode(verde, OUTPUT);
  pinMode(azul, OUTPUT);

  // Seteo el potenciómetro
  pinMode(potenciometroPin, INPUT);

  // Seteo el zumbido
  pinMode(zumbadorPin, OUTPUT);

  // Inicializar comunicación serial
  Serial.begin(9600);
}

void loop() {
  valorPoten = analogRead(potenciometroPin);
  int valorFotoresistor = analogRead(fotoresistorPin);

  if (valorFotoresistor < 200) {
    // Es de noche, produce un zumbido
    producirZumbido();
  } else {
    // No es de noche, controla los LED según el valor del potenciómetro
    controlarLEDs();
  }

  Serial.print("El valor del fotoresistor es = ");
  Serial.println(valorFotoresistor);

  delay(500);
}

void producirZumbido() {
  tone(zumbadorPin, 1000, 1000); // Frecuencia en Hz y duración en ms del zumbido
  delay(1000); // Espera 1 segundo antes de detener el zumbido
  noTone(zumbadorPin); // Detiene el zumbido
}

void controlarLEDs() {
  if (valorPoten < 128) {
    // Color rojo
    digitalWrite(rojo, 255);
    digitalWrite(verde, 0);
    digitalWrite(azul, 0);
    Serial.print("El color esperado es rojo   |");

  } else if (valorPoten < 256) {
    // Color celeste
    digitalWrite(rojo, 0);
    digitalWrite(verde, 255);
    digitalWrite(azul, 255);
    Serial.print("El color esperado es celeste   |");

  } else if (valorPoten < 384) {
    // Color verde
    digitalWrite(rojo, 0);
    digitalWrite(verde, 255);
    digitalWrite(azul, 0);
    Serial.print("El color esperado es verde   |");

  } else if (valorPoten < 512) {
    // Color azul
    digitalWrite(rojo, 0);
    digitalWrite(verde, 0);
    digitalWrite(azul, 255);
    Serial.print("El color esperado es azul   |");

  } else if (valorPoten < 640) {
    // Color blanco
    digitalWrite(rojo, 255);
    digitalWrite(verde, 255);
    digitalWrite(azul, 255);
    Serial.print("El color esperado es blanco   |");

  } else if (valorPoten < 768) {
    // Color amarillo
    digitalWrite(rojo, 255);
    digitalWrite(verde, 255);
    digitalWrite(azul, 0);
    Serial.print("El color esperado es amarillo   |");

  } else if (valorPoten < 896) {
    // Color magenta
    digitalWrite(rojo, 255);
    digitalWrite(verde, 0);
    digitalWrite(azul, 255);
    Serial.print("El color esperado es magenta   |");

  } else {
    // Color rosa
    analogWrite(rojo, 255);
    analogWrite(verde, 0);
    analogWrite(azul, 128);
    Serial.print("El color esperado es rosa   |");
  }
}
$abcdeabcde151015202530354045505560fghijfghij