Plantilla Básica para Sensor Ultrasónico
// Definición de pines para el sensor ultrasónico
const int Trig = 4; // Pin que dispara el pulso
const int Echo = 5; // Pin que recibe el rebote
long duracion;
int distancia;
void setup() {
Serial.begin(9600); // Iniciamos comunicación para ver los datos en la computadora
// Configuramos el Trigger como salida y el Echo como entrada
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
void loop() {
// 1. Limpiamos el pulso asegurando que el Trigger esté apagado
digitalWrite(Trig, LOW);
delayMicroseconds(2);
// 2. Disparamos un pulso de sonido de 10 microsegundos
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
// 3. Calculamos el tiempo que tardó el pulso en regresar
duracion = pulseIn(Echo, HIGH);
// 4. Convertimos el tiempo en distancia (centímetros)
distancia = duracion * 0.034 / 2;
// Mostramos el resultado en el Monitor Serie
Serial.print(«Distancia al obstáculo: «);
Serial.print(distancia);
Serial.println(» cm»);
delay(100); // Pausa corta antes del próximo escaneo
}
Evasor de Obstáculos
// Pines de los «músculos» (Módulo L298N)
const int IN1 = 8;
const int IN2 = 9;
const int IN3 = 10;
const int IN4 = 11;
// Pin del «ojo» o LED indicador
const int ojoDroide = 13;
// Pines del sensor ultrasónico
const int Trig = 4;
const int Echo = 5;
long duracion;
int distancia;
void setup() {
// Iniciamos comunicación para el Monitor Serie
Serial.begin(9600);
// Configuramos el ojo del droide
pinMode(ojoDroide, OUTPUT);
// Configuramos los músculos (L298N)[cite: 2]
pinMode(IN1, OUTPUT); // Conectado a IN1 (Motor A);
pinMode(IN2, OUTPUT); // Conectado a IN2 (Motor A);
pinMode(IN3, OUTPUT); // Conectado a IN3 (Motor B);
pinMode(IN4, OUTPUT); // Conectado a IN4 (Motor B);
// Configuramos el sensor ultrasónico
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
}
void loop() {
// 1. Escanear distancia con el sensor ultrasónico
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
duracion = pulseIn(Echo, HIGH);
distancia = duracion * 0.034 / 2;
// 2. Toma de decisiones (El cerebro en acción)
if (distancia > 0 && distancia < 20) {
// ¡Obstáculo detectado a menos de 20 cm!
digitalWrite(ojoDroide, HIGH); // ENCENDER sensor óptico[cite: 2]
// Freno Total para ambos motores[cite: 2]
digitalWrite(IN1, LOW); //[cite: 2]
digitalWrite(IN2, LOW); //[cite: 2]
digitalWrite(IN3, LOW); //[cite: 2]
digitalWrite(IN4, LOW); //[cite: 2]
delay(1000); // 1000 milisegundos = 1 segundo humano[cite: 2]
// Girar a la Derecha para esquivar (Motor A retrocede, Motor B avanza)[cite: 2]
digitalWrite(IN1, HIGH); //[cite: 2]
digitalWrite(IN2, LOW); //[cite: 2]
digitalWrite(IN3, LOW); //[cite: 2]
digitalWrite(IN4, HIGH); //[cite: 2]
delay(1000); // Gira durante 1 segundo[cite: 2]
} else {
// Camino libre, avanzar por defecto
digitalWrite(ojoDroide, LOW); // APAGAR sensor óptico[cite: 2]
// Motor A y B Avanzan[cite: 2]
digitalWrite(IN1, LOW); //[cite: 2]
digitalWrite(IN2, HIGH); //[cite: 2]
digitalWrite(IN3, LOW); //[cite: 2]
digitalWrite(IN4, HIGH); //[cite: 2]
}
delay(50); // Pequeña pausa antes de volver a medir
}
