#include #include // Pines del sensor ultrasónico const int trigPin = 9; const int echoPin = 8; // Pines del motor (L298N) const int motorPWM = 5; const int motorDir = 7; // Pines de LEDs const int ledDetectado = 3; // LED que se enciende cuando se detecta const int ledNoDetectado = 4; // LED que se enciende cuando no se detecta // Comunicación DFPlayer Mini SoftwareSerial mp3Serial(10, 11); // RX, TX DFRobotDFPlayerMini mp3; bool mp3Ready = false; void setup() { Serial.begin(9600); mp3Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(motorPWM, OUTPUT); pinMode(motorDir, OUTPUT); // Pines LED pinMode(ledDetectado, OUTPUT); pinMode(ledNoDetectado, OUTPUT); analogWrite(motorPWM, 0); digitalWrite(motorDir, LOW); Serial.println("Iniciando DFPlayer..."); if (mp3.begin(mp3Serial)) { mp3.volume(25); mp3Ready = true; Serial.println("DFPlayer listo."); } else { Serial.println("DFPlayer no responde. Continuando sin sonido."); } } void loop() { // Medición ultrasónica digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); long duration = pulseIn(echoPin, HIGH); float distance = duration * 0.034 / 2; Serial.print("Distancia: "); Serial.print(distance); Serial.println(" cm"); if (distance > 0 && distance < 15) { Serial.println("Objeto detectado. Encendiendo motor, LED y sonido."); // Encender LED de detección, apagar el otro digitalWrite(ledDetectado, HIGH); digitalWrite(ledNoDetectado, LOW); // Encender motor al 50% digitalWrite(motorDir, HIGH); analogWrite(motorPWM, 50); delay(200); analogWrite(motorPWM, 255); Serial.println("Motor apagado."); delay(1000); // Pausa para evitar repeticiones rápidas } else { // Si no se detecta, encender LED de no detección digitalWrite(ledDetectado, LOW); digitalWrite(ledNoDetectado, HIGH); } delay(200); }