Professional Documents
Culture Documents
“UNIANDES”
Tema:
Fecha: 29-05-2019
Periodo
Objetivo general:
Desarrollo.
Objetivo General:
Componentes Electrónicos
-Protoboard.
-Ultrasónico HC – SR04.
-2 Micromotores.
-Batería Lipo.
-Arduino UNO.
-Servomotores 90 grados.
Sensor Ultrasónico: El sensor hc-sr04 en particular tiene una sensibilidad muy buena del
orden de los 3mm, teniendo en cuenta que la mayoría de las aplicaciones donde este
sensor es utilizado es para medir o detectar obstáculos o distancias mayores a varios
centímetros, podemos decir que su sensibilidad es muy buena.
Driver l293d: Este driver permite controlar dos motores de corriente continua y motores
paso a paso de no mas de 2 amperes, existen algunos módulos disponibles para la compra
que ya vienen con el driver soldado y algunos pines para controlar las entradas y las
salidas.
Fase 2. Diseño lógico
-Conexión del servo motor 90 grados a la placa arduino uno y protoboard para alimentacion
de energia.
/Robot Laberinto Desarrollado por Grupo 5 6to Semestre uniandes Extension Ibarra 2019/
/*Juan Intriago - Daniel Olmedo - Roberto Fernandez - Alexis Chicaiza */
#include <Servo.h> //libreria de servo
Servo miServo;
int angulo=90;//Servo dirigido hacia adelante
// Aqui defino los pines del Trigger y el Echo del SH-04
const int trigPin = 5;
const int echoPin = 6;
//Variables para la duracion y la distancia
long duracion;
int distancia;
int distanciaAd;
int distanciaIzq;
int distanciaDer;
//variables para controlar el movimiento del robot
int t=285;//tiempo
int v =1000;//espera para el calculo de la distancia
int AdDer=11;
int AtDer=10;
int AdIzq=9;
int AtIzq=8;
void setup(){
//senial naranja del servo conectado al pin7; rojo a 5V y negro o marron es masa
miServo.attach(7); //attach(pin,min,max)pin 7 por defecto 544 y 2400
Serial.begin(9600);
pinMode(AdDer, OUTPUT);
pinMode(AtDer, OUTPUT);
pinMode(AdIzq, OUTPUT);
pinMode(AtIzq, OUTPUT);
//Distancia
pinMode(echoPin, INPUT);
pinMode(trigPin, INPUT);
//declarar el estado inicial ()
digitalWrite(AdDer, HIGH);
digitalWrite(AtDer, HIGH);
digitalWrite(AdIzq, HIGH);
digitalWrite(AtIzq, HIGH);
delay(1000);
}
void loop(){
sensorProximidad();
}
void sensorProximidad(){
miServo.write(90);delay(v);
distancia=CalcularDistancia();
distanciaAd=distancia;
Serial.print("distancia ad: ");Serial.println(distanciaAd);
adelante(t);
if(distanciaAd<28){
detener();
miServo.write(180);delay(v);
distancia=CalcularDistancia();
distanciaIzq=distancia;
Serial.print("distancia I: ");Serial.println(distanciaDer);delay(v);
miServo.write(0);delay(v);
distancia=CalcularDistancia();
distanciaDer=distancia;
Serial.print("distancia D:");Serial.println(distanciaDer);delay(v);
if(distanciaIzq>distanciaDer){
girarIzq(t);
}
else{
girarDer(t);
}
}
}
int CalcularDistancia()
{
digitalWrite(trigPin, LOW);//envia un pulso baja parasegurarse que apagado
delayMicroseconds(2);//se mantiene el pulso en 2 milisegundos
digitalWrite(trigPin, HIGH); //genera un pulso de triger por 10ms
delayMicroseconds(10);
digitalWrite(trigPin, LOW); //se paga el trigPin
duracion = pulseIn(echoPin, HIGH); //lee el echo, retorna el tiempo que vaja la señal en
regresar
distancia = (duracion/2)/29;//calculo entre la distancia y velocidad del sonido
return distancia;//delay(200)
}
void adelante(int ti)
{
Serial.println("ad ");
digitalWrite(AdDer, HIGH);
digitalWrite(AdIzq, HIGH);
digitalWrite(AtDer, LOW);
digitalWrite(AtIzq, LOW);
}
void atras(int ti)
{
Serial.println("atras ");
digitalWrite(AdDer, LOW);
digitalWrite(AdIzq, LOW);
digitalWrite(AtDer, HIGH);
digitalWrite(AtIzq, HIGH);
delay(ti); detener();
}
void girarIzq(int ti)
{
Serial.println("izq ");
digitalWrite(AdDer, HIGH);
digitalWrite(AdIzq, LOW);
digitalWrite(AtDer, LOW);
digitalWrite(AtIzq, HIGH);
delay(ti); detener();
}
void girarDer(int ti)
{
Serial.println("der ");
digitalWrite(AdDer, LOW);
digitalWrite(AdIzq, HIGH);
digitalWrite(AtDer, HIGH);
digitalWrite(AtIzq, LOW);
delay(ti); detener();
}
void detener()
{
digitalWrite(AdDer, LOW);
digitalWrite(AdIzq, LOW);
digitalWrite(AtDer, LOW);
digitalWrite(AtIzq, LOW);
}
Fase 5: Implementar y probar.
Prueba de funcionalidad:
https://www.youtube.com/watch?v=7xHFsQJ5L1s&feature=youtu.be