#define  PIN_RED 23
#define PIN_GREEN 22
#define PIN_BLUE 21

void setup() {
  pinMode(PIN_RED, OUTPUT);
  pinMode(PIN_GREEN, OUTPUT);
  pinMode(PIN_BLUE, OUTPUT);

  // Inicia los LEDs apagados (encendido completo debido al ánodo común)
  analogWrite(PIN_RED, 255);
  analogWrite(PIN_GREEN, 255);
  analogWrite(PIN_BLUE, 255);
}

void loop() {
  // Sube la intensidad del rojo a 255 (encender)
  fadeOut(PIN_RED); // Cambiado a fadeOut para aumentar la intensidad en ánodo común
  // Sube la intensidad del verde a 255 (queda amarillo)
  fadeOut(PIN_GREEN); // Cambiado para ánodo común
  // Baja la intensidad del rojo a 0 (queda verde)
  fadeIn(PIN_RED); // Cambiado para ánodo común
  // Sube la intensidad del azul a 255 (queda cian)
  fadeOut(PIN_BLUE); // Cambiado para ánodo común
  // Baja la intensidad del verde a 0 (queda azul)
  fadeIn(PIN_GREEN); // Cambiado para ánodo común
  // Sube la intensidad del rojo a 255 (queda magenta)
  fadeOut(PIN_RED); // Cambiado para ánodo común
  // Sube la intensidad del verde a 255 (queda blanco)
  fadeOut(PIN_GREEN); // Cambiado para ánodo común
  
  // Una pausa antes de repetir la secuencia
  delay(1000);
}

// Función para "incrementar" la intensidad de un LED en ánodo común
void fadeOut(int pin) {
  for (int i = 255; i >= 0; i--) {
    analogWrite(pin, i);
    delay(10);
  }
}

// Función para "disminuir" la intensidad de un LED en ánodo común
void fadeIn(int pin) {
  for (int i = 0; i <= 255; i++) {
    analogWrite(pin, i);
    delay(10);
  }
}