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.