const int trigPin = 2; const int echoPin = 3; // Pines con capacidad PWM para el fading const int ledVerde = 8; const int ledAmarillo = 9; const int ledRojo = 10; void setup() { Serial.begin(9600); while (!Serial && millis() < 3000); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); // Nota: analogWrite no requiere pinMode, pero lo dejamos por claridad pinMode(ledVerde, OUTPUT); pinMode(ledAmarillo, OUTPUT); pinMode(ledRojo, OUTPUT); } void loop() { long duracion; int distancia; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duracion = pulseIn(echoPin, HIGH); distancia = duracion * 0.034 / 2; if (distancia > 0) { // --- LÓGICA DE FADING --- // LED Verde: Brilla más cuanto más cerca de 80cm esté (rango 40-80) int brilloVerde = map(distancia, 80, 40, 0, 255); analogWrite(ledVerde, constrain(brilloVerde, 0, 255)); // LED Amarillo: Brilla más cuanto más cerca de 40cm esté (rango 10-40) int brilloAmarillo = map(distancia, 40, 10, 0, 255); analogWrite(ledAmarillo, constrain(brilloAmarillo, 0, 255)); // LED Rojo: Brilla más cuanto más cerca de 10cm esté (rango 2-15) int brilloRojo = map(distancia, 15, 2, 0, 255); analogWrite(ledRojo, constrain(brilloRojo, 0, 255)); Serial.print("Rojo:"); Serial.println(brilloRojo); Serial.print("Amarillo:"); Serial.println(brilloAmarillo); Serial.print("Verde:"); Serial.println(brilloVerde); } else { // Si no hay lectura, apagamos todo analogWrite(ledVerde, 0); analogWrite(ledAmarillo, 0); analogWrite(ledRojo, 0); } delay(50); // Un poco más rápido para que el fading se vea fluido }