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...

PIANO PROTOBOARD

  int PIEZO = 11;   int LED = 13;      int BUTTON_C = 2;   int BUTTON_D = 3;   int BUTTON_E = 4;   int BUTTON_F = 5;   int BUTTON_G = 6;   int BUTTON_A = 7;   int BUTTON_B = 8;   int BUTTON_C2 = 9;      int MUSICAL = 10;      void setup()   {     for(int i = 2; i<=10;i++)     {       pinMode(i, INPUT_PULLUP);     }          pinMode(LED, OUTPUT);         }                  void loop()   {      while(digitalRead(BUTTON_C) == LOW)     {       tone(PIEZO, 262, 100);       digitalWrite(LED,HIGH);     }     while(digitalRead(BUTTON_D) == LOW)     {       tone(PIEZO, 294, 100);       digitalWrite(LED,HIGH);     }  ...