Hola, hace unos día empecé hice un robot que esquiva obstáculos, algo sencillo, ahora quiero que reconozca el entorno y poder ver lo que detecta en mi portátil, sin quitarle lo que ya tiene... Le adjuntaré el código... Agradezco su ayuda.
Pdt: El código no es mío.
// Definición de variables y constantes relacionadas con el motor izquierdo
const int IN1 = 13; // Pin digital 13 para controlar sentido giro motor izquierdo
const int IN2 = 12; // Pin digital 12 para controlar sentido giro motor izquierdo
// Definición de variables y constantes relacionadas con el motor derecho
const int IN3 = 11; // Pin digital 11 para controlar sentido giro motor izquierdo
const int IN4 = 10; // Pin digital 10 para controlar sentido giro motor izquierdo
// Definición de variables y constantes relacionadas con los LEDs
const int ledVerde1 = 4; // Pin digital 4 para conectar el LED verde 1
const int ledVerde2 = 5; // Pin digital 5 para conectar el LED verde 2
const int ledRojo1 = 6; // Pin digital 6 para conectar el LED rojo 1
const int ledRojo2 = 7; // Pin digital 7 para conectar el LED rojo 2
// Definición de variables y constantes relacionadas con el zumbador
const int zumbadorPiezo = 8; // Pin digital 8 para conectar el zumbador
// Este programa usará el sensor de ultrasonidos HCSR04
// para medir la distancia a la que se encuentran diferentes obstáculos
// en centímetros y mostrarlo por el puerto serie.
const int triggerEmisor = 3; // El trigger se conecta al pin digital 3
const int echoReceptor = 2; // El echo se conecta al pin digital 2
const int valorUmbral = 10; // Fija la distancia a la que se percibe objeto (10 cm)
long tiempoEntrada; // Almacena el tiempo de respuesta del sensor de entrada
float distanciaEntrada; // Almacena la distancia en cm a la que se encuentra el objeto
// Función que se ejecuta una sola vez al cargar el programa
void setup()
{
// Se declaran todos los pines como salidas
// Pines asociados a los motores
pinMode (IN1, OUTPUT);
pinMode (IN2, OUTPUT);
pinMode (IN3, OUTPUT);
pinMode (IN4, OUTPUT);
// Pines asociados a los LEDS
pinMode (ledVerde1, OUTPUT);
pinMode (ledVerde2, OUTPUT);
pinMode (ledRojo1, OUTPUT);
pinMode (ledRojo2, OUTPUT);
// Pines asociados al zumbador
pinMode (zumbadorPiezo, OUTPUT);
// Pines asociados al sensor ultrasonico HCSR04
pinMode(triggerEmisor,OUTPUT); // El emisor emite por lo que es configurado como salida
pinMode(echoReceptor,INPUT); // El receptor recibe por lo que es configurado como entrada
Serial.begin(9600); // Inicia el puerto de comunicaciones en serie
}
// Función que se repite de manera periódica
void loop()
{
sensorUltrasonidos();
// Si el valor de la distancia es menor que el valor umbral
if(distanciaEntrada>valorUmbral)
{
robotAvance(); // El robot avanza mientras no encuentre obstáculos
enciendeLEDVerde(); // Enciende los LED verdes delanteros
}
else
{
enciendeLEDRojoZumbador(); // Enciende los LED rojos traseros y el zumbador
// El robot retrocede 1 segundo y gira a la derecha 0,5 segundos para esquivarlo
robotRetroceso();
delay(1000);
robotDerecha ();
delay(500);
}
}
/*
Función sensorUltrasonidos: para medir la longitud del pulso entrante.
Mide el tiempo que transcurrido entre el envío del pulso ultrasónico
y cuando el sensor recibe el rebote, es decir:
desde que el pin echo empieza a recibir el rebote, HIGH,
hasta que deja de hacerlo, LOW, la longitud del pulso entrante.
*/
void sensorUltrasonidos()
{
// Se inicializa el sensor de infrasonidos
digitalWrite(triggerEmisor,LOW); // Para estabilizar
delayMicroseconds(10);
// Comenzamos las mediciones
// Se envía una señal activando la salida trigger durante 10 microsegundos
digitalWrite(triggerEmisor, HIGH); // Envío del pulso ultrasónico
delayMicroseconds(10);
tiempoEntrada=pulseIn(echoReceptor, HIGH);
distanciaEntrada= int(0.017*tiempoEntrada); // Calcula la distancia en cm
Serial.println("El valor de la distancia es ");
Serial.println(distanciaEntrada);
delay(200);
}
/*
Función robotAvance: esta función hará que ambos motores se activen a máxima potencia
por lo que el robot avanzará hacia delante
*/
void robotAvance()
{
// Motor izquierdo
// Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
// Motor derecho
// Al mantener un pin HIGH y el otro LOW el motor gira en un sentido
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
/*
Función robotRetroceso: esta función hará que ambos motores se activen a máxima potencia
en sentido contrario al anterior por lo que el robot avanzará hacia atrás
*/
void robotRetroceso()
{
// Motor izquierdo
// Al mantener un pin LOW y el otro HIGH el motor gira en sentido contrario al anterior
digitalWrite (IN1, LOW);
digitalWrite (IN2, HIGH);
// Motor derecho
// Al mantener un pin LOW y el otro HIGH el motor gira en sentido contrario al anterior
digitalWrite (IN3, LOW);
digitalWrite (IN4, HIGH);
}
/*
Función robotDerecha: esta función acccionará el motor izquierdo y parará el derecho
por lo que el coche girará hacia la derecha (sentido horario)
*/
void robotDerecha()
{
// Motor izquierdo
// Se activa el motor izquierdo
digitalWrite (IN1, HIGH);
digitalWrite (IN2, LOW);
// Motor derecho
// Se para el motor derecho
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
/*
Función robotIzquierda: esta función acccionará el motor derecho y parará el izquierdo
por lo que el coche girará hacia la izquierda (sentido antihorario)
*/
void robotIzquierda ()
{
// Motor izquierdo
// Se para el motor izquierdo
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
// Motor derecho
// Se activa el motor derecho
digitalWrite (IN3, HIGH);
digitalWrite (IN4, LOW);
}
/*
Función robotParar: esta función parará ambos motores
por lo que el robot se parará.
*/
void robotParar()
{
// Motor izquierdo
// Se para el motor izquierdo
digitalWrite (IN1, LOW);
digitalWrite (IN2, LOW);
// Motor derecho
// Se para el motor derecho
digitalWrite (IN3, LOW);
digitalWrite (IN4, LOW);
}
/*
Función enciendeLEDVerde: esta función hará que ambos LED verdes se enciendan
y se apaguen los LED rojos (en caso de que estuvieran encendidos)
y el zumbador (en caso de que estuviera sonando)
*/
void enciendeLEDVerde()
{
// Manda 5 V a los pines por lo que enciende los 2 LED verdes
digitalWrite (ledVerde1, HIGH);
digitalWrite (ledVerde2, HIGH);
// Quita 5V de los otros pines por lo que apaga los 2 LED rojos y el zumbador
digitalWrite (ledRojo1, LOW);
digitalWrite (ledRojo2, LOW);
digitalWrite (zumbadorPiezo, LOW);
}
/*
Función enciendeLEDRojoZumbador: esta función hará que ambos LED rojos se enciendan
y que empiece a sonar el zumbador. Además de que se apaguen los LED verdes
*/
void enciendeLEDRojoZumbador()
{
// Manda 5 V a los pines por lo que enciende los 2 LED rojos y el zumbador
digitalWrite (ledRojo1, HIGH);
digitalWrite (ledRojo2, HIGH);
digitalWrite (zumbadorPiezo, HIGH);
// Quita 5V de los otros pines por lo que apaga los 2 LED verdes
digitalWrite (ledVerde1, LOW);
digitalWrite (ledVerde2, LOW);
}
https://tecnopatafisica.com/tecno3eso/teoria/robotica/92-arduinorobot2