Ir al contenido principal

DIAGRAMA EVASOR DE OBSTACULOS

 



// 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
 
// 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;
const int echoReceptor = 2;
const int valorUmbral = 20;
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
  pinMode (IN1, OUTPUT);
  pinMode (IN2, OUTPUT);
  pinMode (IN3, OUTPUT);
  pinMode (IN4, OUTPUT);
 
  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 5 cm se para y sigue recto en caso contrario
  if(distanciaEntrada>valorUmbral)
  {
 
    robotAvance();
  }
  else
  {
    robotDerecha ();
  }
}
/*
 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); // Fórmula para calcular 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);
}
 



Comentarios

Entradas populares de este blog

Libros y Notas de Programación, S.O, Diseño Web y un poco de electrónica.

Buen día chicos... Tal y como se comentó la semana pasada, les comparto un enlace a mi nube de google drive, donde hallarán unos libros, dichos libros son de introducción a la programación, para aquellos que sigan interesados en formarse en el área de computación. Se llama "Como programar en C++" (portada de las hormiguitas) el autor es Deitel, consideren ustedes este libro como el siguiente paso de PSEINT, ya que pasamos de pseudocódigo a código; subí dos versiones, una en español y otra en inglés, considero que la versión en ingles les puede servir para repasar su vocabulario y formarse más en ese idioma, ya que todo lo de computación, o gran mayoría de ello viene en inglés. Para poner en práctica las actividades, deben usar el software DEV C++, si gustan saber como se instala puedo subir por este medio una guía en PDF o un link a un tutorial de YouTube. Además de ello les dejé unas notas para que se introduzcan a los Sistemas Operativos y estructuras básicas. Les deje 2 ar...

EXAMEN DE EXCEL 📚🧠📌

 Seguir las indicaciones para cumplir con la evaluación de Excel 💪📊📌📂📚🧠 Actividad 1: Una tienda de computadoras necesita adquirir nueva mercancía, para ello necesitan elaborar en Excel una tabla de gastos, para tener un presupuesto. Esta es la lista que tienen y el precio Computadora de escritorio - 10500 pesos 💻💻💻💻 Laptop Lenovo - 9800 pesos 💻🧍 Audifonos - 150 pesos 👂 💻 Mouse - 100 pesos 🐀 Teclado - 250 pesos 🎹 Licencia de antivirus - 1800 pesos 👾👾👾👿 Tapete para mouse - 250 pesos La tienda necesita  Computadora de escritorio - 8 piezas Laptop Lenovo - 25 piezas Audifonos - 50 piezas Mouse - 33 piezas Teclado - 33 piezas Licencia de antivirus - 7 piezas Tapete para mouse - 50 piezas Elaborar en Excel una hoja llamada "PRESUPUESTO" de color verde y en esa hoja una tabla donde se coloquen los precios por cada pieza y al final se coloque el total global de todo lo que se debe de gastar, favor de revisar bien las filas y columnas, ya que son importantes Agrega...

DISCO DE VINILO

Para elaborar un disco de vinilo, seguir las siguientes instrucciones, acceder al enlace dando click. Como actividad queda realizar un disco CD. LINK PARA ACCEDER AL MANUAL DEL DISCO DE VINILO