Tuesday, October 22, 2024

Tablas de comportamiento


ROBOT - AUTÓNOMO





Tabla de comportamiento - Robot autònomo


// Esta instrucción incluye un fichero que nos permite manejar el DRIVER del motor con instrucciones fáciles
#include <DRV8833.h>
// Esta instrucción indica la creación del DRIVER virtual dentro del programa
DRV8833 driver = DRV8833();

// Declaración de constantes enteras globales para nombrar los pines:
// 1. Así no tener que recordar los números de pin más adelante sino recordar nombres
// 2. Así cambiar rápido de número de pin, en caso de haber conectado mal

int pinUltrasonido = ; //Pin de conexión del sensor ultrasonido
int distancia; //Variable que guarda el valor de la distancia que lee el sensor ultrasonido


int motorA1 = ;
int motorA2 = ;
int motorB1 = ;
int motorB2 = ;


int velocidadMotorA = ;  // Ajustar valores de la velocidad de cada motor ya que no son nominales (iguales)
int velocidadMotorB = ;

void setup() {

 driver.attachMotorA(motorA1, motorA2);  //Se establecen los pines de conexión para cada entrada de los motores
 driver.attachMotorB(motorB1, motorB2);
}

void loop() {
 
int distancia = obtenerDistancia(); // Se iguala la variable distancia al valor de lectura de la función obetenerDistancia


//Ejecución de la función número 1
 
if (distancia > 15 && distancia < 30) { // Si el valor la distancia se encuentra en un rango entre 15 y 15 (mayor de 16 y menor de 30)  

//Entonces el robot frena, retrocede y gira
 
 
}
//Ejecución de la función número 2
else {
 

  }
   
}

void robotAdelante(){                    //Función que permite al robot moverse hacia adelante
  driver.motorAForward(velocidadMotorA);
  driver.motorBForward(velocidadMotorB);
  }

void robotFrena() {                      //Función que permite al robot detenerse
  driver.motorAStop();
  driver.motorBStop();
  }

void robotRetrocede(){                    //Función que permite al robotretroceder
  driver.motorBReverse(velocidadMotorB);
  driver.motorAReverse(velocidadMotorA);
  }  

void robotDerecha(){                    //Función que permite al robot moverse hacia la izquierda
  driver.motorBForward(velocidadMotorB);
  driver.motorAStop();
  }

void robotIzquierda(){                      //Función que permite al robot moverse hacia la derecha
  driver.motorAForward(velocidadMotorA);
  driver.motorBStop();  
}

int obtenerDistancia() //Función que permite obtener el valor de la distancia (recuerda no modificar ningún valor de esta gunción)
{
  int d;
  pinMode(pinUltrasonido, OUTPUT);    //Indicar que se usará como salida para generar señal ultrasónica
  digitalWrite(pinUltrasonido, LOW);  //Asegurarse de que no esté generando señal ultrasónico
  delayMicroseconds(2);               //Pequeño tiempo de espera para ecos o ruidos iniciales
  digitalWrite(pinUltrasonido, HIGH); //Generar señal ultrasónica
  delayMicroseconds(10);              //Pequeño tiempo de generación de señal
  digitalWrite(pinUltrasonido, LOW);  //Apagar señal ultrasónica
  pinMode(pinUltrasonido, INPUT);     //Indicar que se usará como entrada para recibir señal ultrasónica ("micrófono")
  d = pulseIn(pinUltrasonido, HIGH);  //Instrucción para medir el tiempo en que la señal ultrasónica rebota y produce HIGH
  d = d / 58;                         //Divisíon entre 58 para pasar de tiempo (microsegundos) a distancia (cm) - Valor a calibrar
  return d;                           //Retorna d para que se pueda almacenar en variable
}








No comments:

Post a Comment

Gracias por sus comentarios

Note: Only a member of this blog may post a comment.