Tarea Java
Integrantes
Carlos Manuel Téllez
José Luis Villarreal
Explicación de los comandos
utilizados
PRINT DE LOS MENSAJES
[Link] y [Link] se utilizan para mostrar información en la consola, como la
distancia detectada por el sensor. Ayudan a monitorear el comportamiento del robot.
CONDICIONALES (if / else)
Permiten que el robot tome decisiones automáticamente. Si hay un obstáculo, el
robot se detiene y ejecuta maniobras evasivas. Si no hay obstáculo, continúa
avanzando.
BUCLES (loop)
El bucle loop() se repite constantemente mientras el Arduino está encendido.
Controla el ciclo principal del robot: medir distancia, decidir acciones y moverse.
LECTURA DE DATOS (sensor ultrasónico)
El comando sonar.ping_cm() mide la distancia al obstáculo. Esta lectura permite que
el robot detecte y evite choques.
Código Completo del Robot
// --- Librerías ---
#include <NewPing.h>
// --- Definición de pines ---
#define TRIG 9
#define ECHO 8
#define MAX_DISTANCE 200
#define ENA 5
#define IN1 6
#define IN2 7
#define ENB 10
#define IN3 11
#define IN4 12
NewPing sonar(TRIG, ECHO, MAX_DISTANCE);
int distancia = 0;
int velocidad = 150;
void setup() {
[Link](9600);
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
[Link]("Robot evasor iniciado...");
}
void loop() {
distancia = sonar.ping_cm();
if (distancia == 0) distancia = 200;
[Link]("Distancia: ");
[Link](distancia);
[Link](" cm");
if (distancia <= 20) {
detener();
retroceder();
delay(500);
girarDerecha();
delay(400);
} else {
avanzar();
}
delay(100);
}
void avanzar() {
analogWrite(ENA, velocidad);
analogWrite(ENB, velocidad);
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void retroceder() {
analogWrite(ENA, velocidad);
analogWrite(ENB, velocidad);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
void girarDerecha() {
analogWrite(ENA, velocidad);
analogWrite(ENB, velocidad);
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
void detener() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}