int P1 = 4;          // Definición de un pin de entrada para alguna funcionalidad no especificada
int IN1 = 22;        // Definición de pines para controlar un motor DC
int IN2 = 21;
int Led;             // Variable para almacenar el estado de un pin (posiblemente conectado a algún sensor)

const int pinLEDR = 23;         // Pin conectado al LED RGB para el color rojo

int valorPotenciometroR;        // Variable para almacenar el valor del potenciómetro

// Pines de los potenciómetros (entradas analógicas)
const int pinPotenciometroR = 15; // Pin analógico para el color rojo

// Configuración de las propiedades de PWM
const int frecuencia = 5000;    // Frecuencia del PWM
const int resolucion = 8;       // Resolución del PWM

// Variables para almacenar los valores del ciclo de trabajo
int cicloLEDR = 0;

const int canalLEDR = 0;        // Canal para controlar el LED RGB

void setup() {
  Serial.begin(9600);
  pinMode(pinLEDR, OUTPUT);

  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);

  // Configurar las funcionalidades de PWM para los LEDs
  ledcSetup(canalLEDR, frecuencia, resolucion);

  // Asociar el canal a los pines GPIO que controlarán los LEDs
  ledcAttachPin(pinLEDR, canalLEDR);
}

void loop() {
  Led = digitalRead(P1);    // Leer el estado del pin P1

  delay(3000);

  valorPotenciometroR = analogRead(pinPotenciometroR);    // Leer el valor del potenciómetro para el color rojo
  cicloLEDR = map(valorPotenciometroR, 0, 4095, 0, 255);  // Mapear el valor del potenciómetro al rango del ciclo de trabajo PWM

  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);

  ledcWrite(canalLEDR, cicloLEDR);   // Establecer el ciclo de trabajo para el LED RGB
  Serial.println(Led);               // Imprimir el valor de Led en el puerto serie

  delay(3000);

  // Repetir el proceso para otras configuraciones del motor DC y el LED RGB
}