Vous êtes sur la page 1sur 9

-const int sensorInf1 = 22; // Sensor infrarrojo1 TCRT5000L es la configuración que me permite

mostrar en qué estado se encuentra este sensor

-const int sensorInf2 = 13; Sensor infrarrojo2 TCRT5000L es la configuración que me permite
mostrar en qué estado se encuentra este sensor

-int IN1 = 4; // Puente H configuración del puente h los pines que este posee al arduino

-int IN2 = 5;

-int ENA = 6;

-int IN3 = 7;

-int IN4 = 8;

-int ENB = 9;

-int ECHO = 11; // configuración del sensor Ultrasonido y a que pin del arduino está conectado

-int TRIG = 12;0

-Long duración, distancia; es unas variables los cuales me permiten determinar la duración y
distancia que mi robot debe determinar

-char dato; // Valor tomado por el bluetooth lo que me indica la aplicación hacia a donde debe ir
mi robot

-int dis = 20; variable de distancia la cual me determina si el rival esta a una distancia de 20 cm

-int dur = 0;

-int num = 0;

-void setup() {

pinMode(sensorInf1, INPUT); // Sensor infrarrojo1 TCRT5000L pin que se encuentra

pinMode (sensorInf2, INPUT); // Sensor infrarrojo2 TCRT5000L pin que se encuentra

pinMode (IN1, OUTPUT); // Puente H pin que se encuentra

pinMode (IN2, OUTPUT); // Puente H pin que se encuentra

pinMode (ENA, OUTPUT); // Puente H pin que se encuentra

pinMode (IN3, OUTPUT); // Puente H pin que se encuentra

pinMode (IN4, OUTPUT); // Puente H pin que se encuentra

pinMode (ENB, OUTPUT); Puente H pin que se encuentra

pinMode (ECHO, INPUT); // Ultrasonido pin que se encuentra


pinMode (TRIG, OUTPUT); // Ultrasonido pin que se encuentra

Serial. Begin (9600);

void loop () {

digitalWrite (TRIG, LOW);

delayMicroseconds (2);

digitalWrite (TRIG, HIGH); // genera el pulso de TRIGER por 10ms del ultrasonico

delayMicroseconds (10);

digitalWrite (TRIG, LOW);

int valor1 = 0; variable que me lee lo del infrarrojo

int valor2 = 0;

// valor1 = digitalRead(sensorInf1); //Lectura del sensor (Infrarrojo1) lo que este me lee

valor2 = digitalRead(sensorInf2); ); //Lectura del sensor (Infrarrojo2) lo que este me lee

duración = pulseIn (ECHO, HIGH); //Lectura del sensor (Ultrasonido)

distancia = (duración/2) / 29;

Serial.println(distancia);//me lee la distancia que se encuentra el rival ante el ultrasonico

Serial.println(valor2);

Avanzar - adelante -> Si distancia esta entre 10 y 50 cm si encuentra algo con el ultrasonico

do

digitalWrite(TRIG, LOW);

delayMicroseconds(2);

digitalWrite(TRIG, HIGH); // genera el pulso de TRIGER por 10ms

delayMicroseconds(10);

digitalWrite(TRIG, LOW);

dur = pulseIn(ECHO, HIGH); //Lectura del sensor (Ultrasonido)

dis = (dur/2) / 29;

if(dis < 10){

digitalWrite(IN1,0);
digitalWrite(IN2,1);

digitalWrite(IN3,1);

digitalWrite(IN4,0);

analogWrite(ENB,110);

analogWrite(ENA,120);

Serial.println(dis);

distancia = 100;

num = 0;

else if (num == 0) {

digitalWrite(IN1,0);

digitalWrite(IN2,0);

digitalWrite(IN3,0);

digitalWrite(IN4,0);

analogWrite(ENB,110);

analogWrite(ENA,120);

}while (distancia < 10 || dis < 10);

// Retroceder y girar -> si detecta Blanco sensor infrarrojo 1 o 2

if (valor2 == 1) {

digitalWrite(IN1,0); // Retroceder

digitalWrite(IN2,1);

digitalWrite(IN3,1);

digitalWrite(IN4,0);

analogWrite(ENA,120);

analogWrite(ENB,120);

delay(2000);

digitalWrite(IN1,0); // Girar

digitalWrite(IN2,0);
digitalWrite(IN3,1);

digitalWrite(IN4,0);

analog Write(ENB,110);

delay (1000);

digitalWrite(IN1,0); // stop para el robots con el botón de stop de la aplicación

digitalWrite(IN2,0);

digitalWrite(IN3,0);

digitalWrite(IN4,0);

analogWrite(ENB,110);

if (Serial.available()) // Comprueba disponibilidad conexión del bluetoth si este está activado

num = 1;

dato = Serial.read();

//Serial.print(dato);//me indica que esta leyendo la aplicacion

if(dato == 'a'){

//Serial.print("arriba”) ;//avanza el robot hacia Arriba

digitalWrite(IN1,1); // Avanzar

digitalWrite(IN2,0);

digitalWrite(IN3,0);

digitalWrite(IN4,1);

analogWrite(ENB,110);

analogWrite(ENA,120);

if(dato == 'b'){

//Serial.print("abajo");

digitalWrite(IN1,0); // Retroceder

digitalWrite(IN2,1);
digitalWrite(IN3,1);

digitalWrite(IN4,0);

analogWrite(ENA,120);

analogWrite(ENB,120);

if (dato == 'c'){

//Serial.print("izquierda”) ;//hace ir el robot hacia la izquierda

digitalWrite(IN1,0); // Izquierda

digitalWrite(IN2,0);

digitalWrite(IN3,1);

digitalWrite(IN4,0);

analogWrite(ENB,110);

if (dato == 'd’) {

//Serial.print("derecha"); hace ir el robot hacia la derecha

digitalWrite(IN1,0); // Derecha

digitalWrite(IN2,1);

digitalWrite(IN3,0);

digitalWrite(IN4,0);

analogWrite(ENB,110);

if(dato == 'e'){

//Serial. Print("stop");

digitalWrite(IN1,0); // Stop para el robots por completo

digitalWrite(IN2,0);

digitalWrite(IN3,0);

digitalWrite(IN4,0);

analogWrite(ENB,110);

}
}

Para la aplicación de bluetooth se hizo la aplicación en app inventor la cual permite manejar el
robot a una distancia considerable, consta de cinco botones de los cuales tres de ellos son para
direccionar el robot a la izquierda, derecha y hacia adelante; uno para realizar la activación del
bluetooth con el teléfono móvil en el cual esa instalado la app y el ultimo que es de stop para
detener el robot completamente cuando ya no se quiera que esté en movimiento además cuenta
con el sensor ultrasonico el cual en pantalla me muestra a que distancia se encuentra el rival por la
parte trasera del robots el cual evitamos cualquier ataque sorpresa del robot enemigo.
A continuación, se describirá paso a paso la aplicación hecha en app inventor pero su diagrama de
bloques no se puede copiar por bloques asique toco optar por pantallazos.

Aquí podemos observar que en el primer bloque se determina el estado del bluetooth si está
vinculado o no con el bluetooth del celular de la persona que lo está utilizando y si no está
vinculado no permite que la aplicación sirva.

En el siguiente bloque vemos que si ya ha sido vinculado el modulo bluetooth de la aplicación y el


del cliente la aplicación ya comienza a funcionar donde podemos ver las diferentes opciones que
se ofrecen como adelantar, atrasar, derecha, izquierda, stop. que si el cliente pulsa o le da clic al
botón de arriba este me envía un dato en este caso la letra “a” el cual es enviado a la arduino el
cual según la programación hecha hace que el robot avance hacia delante.

haci mismo pasa con el siguiente bloque que es si el cliente pulsa o le da clic al botón de abajo este
me envía un dato en este caso la letra “b” el cual es enviado a la arduino el cual según la
programación hecha hace que el robot avance hacia atrás.
haci mismo pasa con el siguiente bloque donde se configura que el robot vaya hacia la izquierda
donde el cliente pulsa o le da clic al botón de izquierda este me envía un dato en este caso la letra
“c” el cual es enviado a la arduino el cual según la programación hecha hace que el robot avance
hacia la izquierda.

haci mismo pasa con el siguiente bloque donde se configura que el robot vaya hacia la derecha
donde el cliente pulsa o le da clic al botón de la derecha este me envía un dato en este caso la letra
“d” el cual es enviado a la arduino el cual según la programación hecha hace que el robot avance
hacia la derecha.

Haci mismo pasa con el siguiente bloque donde se configura que el robot se detenga
completamente esto sucede cuando el usuario que maneja la aplicación pulsa o le da clic al botón
stop que aparece en la aplicación este me envía un dato en este caso la letra “e” el cual es enviado
a la arduino el cual según la programación hecha hace que el robot se detenga completamente.
Y por último en el último bloque se inicializa la variable que me permite ver y determinar qué es lo
que está leyendo la aplicación la cual me permite determinar qué es lo que el robot debe ejecutar
según las indicaciones del usuario que está manipulando la aplicación, hay se puede ver que esta
variable se colocó en cero debido a que es su estado inicial ósea el robot no está haciendo
manipulado y mediante se le de clic en cualquier opción de la aplicación esta está cambiando
debido a las órdenes que se le dé a cumplir.

Y por último en este bloque es el más importante donde determina el estado del bluetooth el cual
me permite determinar las ordenes y lecturas que se están presentando y también este bloque me
permite ver en la aplicación la distancia que se encuentra el rival mediante la lectura del sensor
ultrasonico.

Vous aimerez peut-être aussi