SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Coche por bluetooth controlado por la aplicación en appinventor 2 de Andrés Lasry “mando.apk” y
complementada por Joaquín Berrocal, para la recepción de datos desde la placa Arduino Uno del coche hacia
el teléfono. Marzo-2017
Carcasa utilizada; Coche CYBOT 950 del 2001
Información circuitería de la placa driver: http://www.lpilsley.co.uk/cybot/driver.htm
Como se puede ver en el display marca 15 cm ------ 150 mm
De distancia al sensor frontal bluetooh. Prueba realizada OK ver imágenes de abajo.
También se ve que la distancia a objeto frontal que ha de pararse cuando va caminado de frente es a
unos 28 cm. OK
POSICIONES DEL JOYSTICK DEL MANDO DEL TFNO.
/*"COCHE_POR_BT_Joaquin_Berrocal.ino"
realizado por:
JOAQUÍN BERROCAL PIRIS para "curso 17S1AR001 de Andrés Lasry"
Nov16-Feb17
Se trata de utilizar una aplicación bluetooth por él realizada
para enviar datos desde el telefono móvil a la placa Arduino.
La aplicación la tiene realizada en ANDROID por APPINVENTOR2.
es configurable los valores que envía.
por defecto tiene los siguientes;
1 2 3
4 5 6
7 8 9
- Lo utilizaré para manejar mi coche CYBOT950 Eaglesmoss del 2001.
Dirección web sobre el coche http://www.lpilsley.co.uk/cybot/driver.htm
el cual dispone;
+ de una placa driver par activar los motores
Le incorporo:
+ Una placa BT HC05 para la recepción bluetooth
+ Dos sensores de distancia HC-SR04, que pueden medir
distancias entre 2 cm a 4mts con una precisión de 3mm
+ Dos leds que podrán ser activados desde el bluetooch
+ Programa "mando_mio_V1.aia" que realizo basado en el "mando.aia" de Andrés lasry.
Le tengo hecho las siguientes modificaciones:
+ Permitirá la recepción de datos del arduino al móvil. es decir:
+ Permitirá ver en el tfno sobre el LCD, los valores de distancia al objeto de forma contínua
+ Se podrán encender o apagar los leds desde el tfno.
+ Todas las posiciones del Joystick ejecutan una función
----posición Joystick Android y actuación----
posicion 1 : Activa leds
posicion 7 : los apaga.
posición 2 : Marcha adelante.
posición 8 : Marcha Atrás
posición 4 : Marcha a Izquierda; girará aprox 90º y continuará de frente.
posición 6 : Marcha a derecha; girará aprox 90º y continuará de frente.
posición 3 : Gira sobre sí mismo a Dcha
posición 7 : gira sobre sí mismo a Izqda.
Todas estas posiciones se verán reflejadas sobre la LCD del móvil, así como el valor en centímetros
de la distancia a los objetos de la parte frontal y trasera del coche.
Claramente estos datos serán enviados de la placa arduino al móvil de forma constante.
La dificultad del proyecto ha estado en el envío, no de uno, si no de tres datos diferentes al móvil
tratando siempre de conseguir rapida respuesta del tfno móvil con la placa arduino del coche en el envío y re
------------- Para activar los 2 motores;----------------
- Giro hacia adelante: pines arduino 3 y 5 a nivel HIGH (con 1-3 de la placa driver)
- Giro hacia atrás: pines arduino 6 y 9 a nivel HIGH (con 2-4 de la placa driver)
- Giro a Dcha: pines arduino 3 en LOW y pin 5 en HIGH
- Giro a izqda: pines arduino 3 en HIGH y pin 5 en LOW
- Giro sobre sí mismo a Dcha : analogWrite(3,0); analogWrite (5,125);
- Giro sobre sí mismo a Izqda : analogWrite(3,125); analogWrite (5,0);
-----------------------------------------------------------
OBSERVACIONES:
La velocidad se irá reduciendo a medida que se vaya acercando a cualquier obstáculo que se encuentre
por delante o detrás del vehículo.
Si se sobrepasa la distancia mínima, se producirá una intermitencia de los leds durante 4 segundos, y acto
seguido, invertirá la marcha durante 1 sg para salir de esa posición, quedandosé en posición de "Parado"
a la espera de recibir ordenes desde el joystick del mando.
------------Conexionado de la placa driver.-------
Conector de 7 pines
Nota RH y LH significan motor Righ (motor dcho, motor Left (motor izqdo)
---Motores hacia adelante, poner los pines 1-3 en high de la placa driver---
(que corresponden con el pin 3 y 5 de arduino en HIGH)
1 - RH motor
3 - LH motor
---Motor hacia Atrás, poner los pines 2-4 en high de la placa driver---
(que corresponden con el pin 6 y 9 de arduino en HIGH)
2 - RH motor
4 - LH motor
5 - 5 volts ,se puede usar como alimentación a otros elementos
6 - 6 volts , " " " " " " "
7 - ground.
Conector de 4 pines
1 - ground.
2 - ground.
3 - 9 volts in procedente de la pila de 9V
4 - 6 volts in.procedente de las 4 pilas de 1.5V
-------------------------
conector MT1; es el LH Motor (motor de la izqda)
conector MT2; es el LR Motor (motor de la dcha)
++++++Conexionado ARDUINO PLACA DRIVER ++++++
ARDUINO PLACA DRIVER
MT2R_GiroAdelante pin 3PWM --------- 1
MT1L_GiroAdelante pin 5PWM --------- 3
MT2R_GiroAtras pin 6PWM ------------ 2
MT2L_GiroAtras pin 9PWM ------------ 4
GND -------------------------------- 7 GND para unificar masas.
5 salida de la placa driver a + 5V
6 salida a +6V de la placa driver
----Conexionado Arduino sensor de distancia HC-SR04------
ARDUINO HC-SR04
2 como salida ----- TriggerDtero
4 como entrada ---- echoDtero.
7 como salida ----- TriggerTrasero
8 como entrada ---- echoTrasero.
--------Conexionado Arduino sensor BlueTooth HC05---------
ARDUINO Sensor blueTooth HC05
10RX -------- Con pin Tx Bluetooth
11TX -------- Con pin Rx Bluetooth
OBSERVACIONES: El bluetooth HC05 (que es maestro/esclavo)debemos siempre mandarle
al final de cada comando r,n .Para ello configurar el monitor/terminal serial de arduino,
para que envíe: "ambos NL & CR"
Y lo mismo si lo hacemos de cualquier aplicación android como en este caso.
----------------------------------------------------------
ARDUINO
12 ----- activa dos leds azules que ya llevan R de 68ohm
-----------------------------------------------------------
*/
#include < SoftwareSerial .h> //Para manejo bluetooth HC05
//permite asignar otros puertos distinto al serial para poder utilizarlo en conjunto
//Para utilizar a la par la comunicación con el Serial Monitor que utiliza los pines 0 RX y 1 Tx
//y la comunicación BLUETOOH pines que le asigno el pin 10RX y 11Tx intercambiarlos con los de
//la placa bluetooth 10Rx con el Tx y el 11Tx con el Rx de la placa bluetooth HC05
//---variables globales-------
const int nLecturas=10; //para hacer 1/2 de 10 lecturas BT
int lecturas[nLecturas]; //array para guardar últimas lecturas BT
int indice = 0;
int total = 0;
unsigned int media = 0; //media de las lecturas
unsigned int media1=0; //media del sensor frontal
unsigned int media2=0; //media del sensor trasero
String direccion = "";
unsigned long tiempo = 0;
unsigned long distancia = 0;
int distanciaMinima= 25; //valor inicial 25cm
int tiempoGirar = 100; //tiempo para hacer girar corresponde aprox a 90º
int tiempoParada = 100; //tiempo para que paren motores
int dato = '5'; //inicia posición reposo joystick ""Ponerlo entre comillas"" o se verá mal en lcd.
const int MT2R_GiroAdelante=3; //unido al pin 1 de la placa driver MT2 hacia adelante
const int MT1L_GiroAdelante=5; //unido al pin 3 de la placa driver MT1 hacia adelante
const int MT2R_GiroAtras=6; //unido al pin 2 de la placa driver MT2 hacia atrás
const int MT1L_GiroAtras=9; //unido al pin 4 de la placa driver MT1 hacia atrás
const int leds = 12;//para activar leds en la pro micro el 20
const int triggerF = 2;// para activar el trigger del sensor distancia HC-SR04 Frontal
const int echoF = 4;// por donde recibe señal del sensor frontal
const int triggerT = 7;// para activar el trigger del sensor distancia HC-SR04 Trasero
const int echoT = 8;// por donde recibe señal del sensor Trasero
//--------------------PROGRAMA-----------------
/* OBSERVACIÓN MUY IMPORTANTE: sobre las limitaciones de la librería "SoftwareSerial (Rx,Tx);"
http://manueldelgadocrespo.blogspot.com.es/p/biblioteca.html
No todos los pines en la Mega y Mega 2.560 soportan interrupciones de cambio de nivel,
por lo que solamente la siguiente puede ser utilizado para
RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 ( 63),
A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).
No todos los pines de las placas Leonardo y Micro soportan interrupciones de cambio de nivel,
así que solamente los siguientes se pueden utilizar para
RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).
En Arduino o Genuino 101 la velocidad máxima actual de RX es de 57600bps
En Arduino o Genuino 101 RX no funciona en el pin 13
*/
//si utilizo la PRO MICRO El pin 10 de arduino pro micro hace de RX y 16 de TX
SoftwareSerial bt(10,11); //en la uno 10RX Y 11TX ; intercambiarlos con la placa
//bluetooth HC05, es decir,
// unir pin10(RX)con ------> TX placa bluetooth HC05
//y el pin 11 (TX)con ------> RX placa bluetooth HC05
String posicJoystickGiroMot[]= {"ADELANTE" ,"ATRAS ","IZQUIERDA" ,"DERECHA " ,"PARADO " ,"LEDS ON
void setup()
{
//--configuracion pines de salida y entrada---
//OUTPUT 2-3-5-6-7-9 y el 20 INPUT 4-8 conectados al pin "echo" del sensor ultrasónico Frontal - Trasero
//los pines 10Rx y 11Tx para el bluetooth no hace falta configurarlos
for (int i=2;i<=9;i++)
{
if ((i == 4)or (i==8))
{
pinMode (i,INPUT); //configura como entrada el 4 y 8
continue ; // salta de nuevo al for sin hacer lo de más abajo
}//
pinMode (i,OUTPUT );
digitalWrite (i,LOW); //los inicializa a cero
} //fin for
pinMode (leds, OUTPUT ); //pin 12 activar leds como salida
digitalWrite (leds, LOW); //inicia a nivel 0
//---------------------------------
// MI PLAQUITA bluetooh va a "9600".
//la comunicación con la placa bluetooth HC05 sólo acepta 9600 baudios.
bt.begin(9600); //serial bluetooth
Serial .begin(9600); //Serial arduino; acepta todas las velocidades
//----------------------------------------------------------------
}// fin setup ();
//----------------------------------------------------------------
void loop()
{
//-------------MENSAJES DISTANCIA AL MÓVIL---------
//int medidorDistancias (byte pinTrigger,byte pinEcho,int distancia)
medidorDistancias (2,4,distanciaMinima);
media1= media; //"Distancia Frontal: "
medidorDistancias (7,8,distanciaMinima);
media2= media; //"Distancia Trasera: "
// sprintf(buffer,"%d,%d",media1,media2);//no acepta el sprintf(buffer,"%s,%d,%d",direccion,media1,media2);
//----ENVÍO AL SERIAL se puede suprimir------------
Serial .println (direccion); //variable global con la dirección que toma el vehículo
Serial .print(media1); //Sensor Delantero
Serial .println (" cm");
Serial .print(media2); //Sensor Trasero
Serial .println (" cm");
//----- SENSORES DE DISTANCIA SR-HC04------------
//----------ENVÍO DE DATOS AL MÓVIL---------------
bt.print(direccion); //index 1 variable global con la dirección que toma el vehículo.
//sensor ultrasonico Frontal
bt.print("/"); //separador
bt.print(media1); //index 2 Sensor Delantero
bt.print(" cm");
bt.print("/");//separador para lectura del siguiente sensor ultrasónico
//sensor ultrasonico Trasero
bt.print(media2); //index 3 Sensor Trasero
bt.print(" cm");
bt.print("/"); //separador para lectura del siguiente sensor ultrasónico
//---------------------------------------------------
} // fin loop()
//++++++++++++++++FUNCIONES UTILIZADAS++++++++++++++++
// ----FUNCIÓN DE LECTURA PUERTO BLUETOOTH----
// lo pongo aquí para que lea de forma constante y se pueda tener
//respuesta más inmediata a los botones del Joystick móvil
void lecturaPuertoBT()
{
while(bt.available ()>0)
{
int datoprueba = bt.read();//variable entera global
if ((datoprueba!=13)and (datoprueba!=10))
{
dato = datoprueba;
}
// En la función "switch" el valor a comparar "case X: " X sólo puede ser de tipo entero.
//otros lenguajes sí lo aceptan pero arduino NO: No obstante, he probado que si pongo
//en los "case" el valor entero a comprobar entre comillas; ej case '2' todo ok SI LO ACEPTA
//es decir el valor enviado por el mando bluetooth es el entero 2. Si lo pongo sin comillas no lo acepta
switch (dato) //comprobamos el caracter que nos llega
{
//---para activar o desactivar los leds pin 12 ---
case '1':
{
Serial .println (posicJoystickGiroMot[5]); //GIRO HACIA ADELANTE
direccion = "LEDS ON "; //ajustado a 11 caracteres+espacios en el appinventor
digitalWrite (leds, HIGH);// pin 12
break;
}
case '9':
{
Serial .println (posicJoystickGiroMot[6]); //GIRO HACIA ADELANTE
direccion = "LEDS OFF " ;//ajustado a 10 11
digitalWrite (leds, LOW);// pin 12
break;
}
//-------------------------------------------------
case '2':
{
Serial .println (posicJoystickGiroMot[0]); //GIRO HACIA ADELANTE
direccion = "ADELANTE" ; //ajustado a 8
apagarTodos();
giroAdelante(); //pin 1 y 3 en HIGH
break;
}
case'8':
{
Serial .println (posicJoystickGiroMot[1]); //GIRO HACIA ATRÁS
direccion = "ATRAS "; //ajustado a 13
apagarTodos();
giroAtras(); //pines 6 y 9 en HIGH
break;
}
case'4':
{
Serial .println (posicJoystickGiroMot[2]); //GIRO A IZQDA
direccion = "IZQUIERDA" ;//ajustado a 9
apagarTodos();
//luego activa el nuevo giro
digitalWrite (MT2R_GiroAdelante, HIGH);// pin 3
digitalWrite (MT1L_GiroAdelante, LOW);// pin 5
delay(tiempoGirar); //tiempo para girar
apagarTodos();
giroAdelante(); //pin 1 y 3 en HIGH
break;
}
case'6':
{
Serial .println (posicJoystickGiroMot[3]); //GIRO A DCHA
direccion = "DERECHA " ; //ajustado a 9
//primero desactiva TODOS los MOTORES
apagarTodos();
//luego activa el nuevo giro
digitalWrite (MT2R_GiroAdelante, LOW);// pin 3
digitalWrite (MT1L_GiroAdelante, HIGH);// pin 5
delay(tiempoGirar); //tiempo para girar
apagarTodos();
giroAdelante(); //pin 1 y 3 en HIGH
break;
}
case'5':
{
Serial .println (posicJoystickGiroMot[4]); //VEHÍCULO PARADO
direccion = "PARADO " ; //ajustado a 11
apagarTodos();
break;
}
// -----hacer rotar de forma continua a Dcha o a Izqda------
case'3': //giro a DCHA continuo
{
Serial .println (posicJoystickGiroMot[2]); //GIRO A DCHA
direccion = "GIRO >>>>" ;//ajustado a 9
apagarTodos();
//luego activa el nuevo giro
analogWrite (MT2R_GiroAdelante,0); // pin 3
analogWrite (MT1L_GiroAdelante,125); // pin 5
break;
}
case'7': //giro a IZQDA continuo
{
Serial .println (posicJoystickGiroMot[2]); //GIRO A IZQDA
direccion = "<<<< GIRO" ;//ajustado a 9
apagarTodos();
//luego activa el nuevo giro
analogWrite (MT2R_GiroAdelante,125); // pin 3
analogWrite (MT1L_GiroAdelante,0); // pin 5
break;
}
//----------------------------------------------------------
} //fin del switch(dato)
} //fin if bt.available()>0
}//fin void lecturaPuertoBT
//--------------------------------------------
//++++FUNCIÓN medidorDistancias ()++++
//------------instrucciones para el control de la distancia ----
//--si es menor a una distancia que especifiquemos se parara----
// se hace una media de 10 lecturas para dar un valor más estbilizado
int medidorDistancias (byte pinTrigger,byte pinEcho,int distMinima)
{
total = 0; // Sí lo necesito al no utilizar el array int lecturas[nLecturas];
indice = 0; //reiniciamos el indice.
while (indice < nLecturas)
{
digitalWrite (pinTrigger, LOW); //activación pinTrigger 2 - 7 sensores frontal-trasero
delayMicroseconds (5); //para estabilizar otros le dan sólo 2 us
digitalWrite (pinTrigger, HIGH);
delayMicroseconds (10); //ha de ser 10 us para el sensor HC-SR04 otros sensores le dan sólo 5 us.
digitalWrite (pinTrigger, LOW); //paro la activación y comienza el envío de la señal ultrasónica
//por el pin "echo" se empieza a recibir una señal HIGH la función pulsein(), pausa el sketc
//para contar el tiempo transcurrido hasta recibir el rebote, momento en el cual por el pi
//"echo" pasa a detectarse una señal LOW y pulseIn() devuelve su resultado en microsegundos
// http://manueldelgadocrespo.blogspot.com.es/p/pulsin.html
tiempo = pulseIn (pinEcho, HIGH);//receptor pinEcho 4 - 8 sensores frontal-trasero
distancia = 0.01717*tiempo; // considero la velocidad del sonido como 343,2m/s según la wiki a 20
//dando un resultado de 0.01717cm por cada microsegundo considerando
total= total + distancia;
indice = indice + 1;
lecturaPuertoBT(); // si lo dejo me sube el contaje de la distancia
delayMicroseconds (25); //tiempo mínimo entre lecturas es de 20 us.
}//fin while indice <= nlecturas
media = total / nLecturas; //en cm
//Según donde mires dicen que el sensor de distancia mide desde
//los 2cm a 4 ó 5 o incluso 7 metros con una precision de 3 mm.
//para evitar posibles problemas limito su lectura en 400
if (media > 400){media = 400;}
controlDistMinima();
}//fin función medidorDistancias (...)
//--------------------------------------------------------------
//++++++++++++FUNCIÓN controlDistMinima()++++++++++
//Evita se pase, y si lo hace para,parpadean los leds y retrocede-avanza un tiempo
void controlDistMinima()
{
// if (dirección != direccionPrevia)
///// { direccionPrevia = direccion; //evita que
//---------------------al 100% máxima velociad--------
if ((media >= distanciaMinima + 75)and (direccion == "ADELANTE" ))
{
digitalWrite (MT2R_GiroAdelante, HIGH);// pin 3 analogWrite(MT2R_GiroAdelante,255);// pin 3
digitalWrite (MT1L_GiroAdelante, HIGH);// pin 5 analogWrite(MT1L_GiroAdelante,255);// pin 5
}
if ((media >= distanciaMinima + 75)and (direccion == "ATRAS ")) // ajustado a 13
{
digitalWrite (MT2R_GiroAtras, HIGH);// pin 6 analogWrite(MT2R_GiroAtras,255);// pin 6
digitalWrite (MT1L_GiroAtras, HIGH);// pin 9 analogWrite(MT1L_GiroAtras,255);// pin 9
}
//------------------------al 50% velocidad-----------
if ((media >= distanciaMinima + 50)and (media < distanciaMinima + 75)and (direccion == "ADELANTE" ))
{
analogWrite (MT2R_GiroAdelante,125); // pin 3 digitalWrite(MT2R_GiroAdelante,HIGH);// pin 3
analogWrite (MT1L_GiroAdelante,125); // pin 5 digitalWrite(MT1L_GiroAdelante,HIGH);// pin 5
}
if ((media >= distanciaMinima + 50)and (media < distanciaMinima + 75)and(direccion == "ATRAS ")
{
analogWrite (MT2R_GiroAtras,125); // pin 6 digitalWrite(MT2R_GiroAtras,HIGH);// pin 6
analogWrite (MT1L_GiroAtras,125); // pin 9 digitalWrite(MT1L_GiroAtras,HIGH);// pin 9
}
//------------------------al 28% velocidad-----------
if ((media >= distanciaMinima + 25)and (media < distanciaMinima + 50)and (direccion == "ADELANTE" ))
{
analogWrite (MT2R_GiroAdelante,70); // pin 3 digitalWrite(MT2R_GiroAdelante,HIGH);// pin 3
analogWrite (MT1L_GiroAdelante,70); // pin 5 digitalWrite(MT1L_GiroAdelante,HIGH);// pin 5
}
if ((media >= distanciaMinima + 25)and (media < distanciaMinima + 50) and(direccion == "ATRAS "
{
analogWrite (MT2R_GiroAtras,70); // pin 6 digitalWrite(MT2R_GiroAtras,HIGH);// pin 6
analogWrite (MT1L_GiroAtras,70); // pin 9 digitalWrite(MT1L_GiroAtras,HIGH);// pin 9
}
//------------------------al 20% velocidad-----------
if ((media >= distanciaMinima + 10)and (media < distanciaMinima + 25)and (direccion == "ADELANTE" ))
{
analogWrite (MT2R_GiroAdelante,50); // pin 3 digitalWrite(MT2R_GiroAdelante,HIGH);// pin 3
analogWrite (MT1L_GiroAdelante,50); // pin 5 digitalWrite(MT1L_GiroAdelante,HIGH);// pin 5
}
if ((media >= distanciaMinima + 10)and (media < distanciaMinima + 25) and(direccion == "ATRAS "
{
analogWrite (MT2R_GiroAtras,50); // pin 6 digitalWrite(MT2R_GiroAtras,HIGH);// pin 6
analogWrite (MT1L_GiroAtras,50); // pin 9 digitalWrite(MT1L_GiroAtras,HIGH);// pin 9
}
//------Parar + intermit Leds + invertir sentido giro durante 1sg a 1/2 velocidad -------
// ----y poner dato ='5' para parar motor a espera orden de joystick del móvil-----------
//A (media < distanciaMinima +10) parar 100ms + intermit leds ( 4 sgdos)+ invertir trayectoria para salir
//de esa posición. Se evita que choque con objetos que pueda encontrar de frente o por la parte trasera
if ((media < distanciaMinima +10 )and (direccion == "ADELANTE" ))
{
apagarTodos(); //detenerlo + intermit leds + salida direccion inversa
intermitenciaLeds(); //intermitencia 10ms + tiempoParada
digitalWrite (MT2R_GiroAtras, HIGH);
digitalWrite (MT1L_GiroAtras, HIGH);
delay(1000); //para que salga
dato = '5'; // para que se pare el motor
}
if ((media < distanciaMinima + 10) and(direccion == "ATRAS "))
{
apagarTodos(); //detenerlo + intermit leds + salida direccion inversa
intermitenciaLeds(); //intermitencia 10ms + tiempoParada
digitalWrite (MT2R_GiroAdelante, HIGH);
digitalWrite (MT1L_GiroAdelante, HIGH);
delay(1000); //para que salga
dato = '5'; // para que se pare el motor
}
}//fin función controlDistMinima()
//-----------------------------------------------------------
//++++FUNCIÓN giroAdelante()++++
void giroAdelante()
{
digitalWrite (MT2R_GiroAdelante, HIGH);// pin 3
digitalWrite (MT1L_GiroAdelante, HIGH);// pin 5
}//fin función void giroAdelante()
//-----------------------------------------------------------
//++++FUNCIÓN void giroAtras()++++
void giroAtras()
{
digitalWrite (MT2R_GiroAtras, HIGH);// pin 6
digitalWrite (MT1L_GiroAtras, HIGH);// pin 9
}//fin función void giroAtras()
//-----------------------------------------------------------
// se pondrán a nivel 0 la activación a los motores cuando se cambie
// de posición el Joystick o bien cuando esté en posición neutra
//y se le dará un pequeño tiempo(tiempoParada = 100) para hacer suaves los cambios
//++++FUNCIÓN apagarTodos()++++
void apagarTodos()
{
for (int i=2;i<=9;i++)
{
if ((i == 4)or (i==8))//el 4 y el 8 son entradas de los "echo" sensor distacia HC-SR04
{
continue ; // salta de nuevo al for sin hacer lo de más abajo
}//
digitalWrite (i,LOW); //pone a nivel 0 las salidas
} //fin for
delay(tiempoParada); //tiempo para que se paren todos los motores
}//fin función void apagarTodos()
//-----------------------------------------------------------
//-----------FUNCIÓN intermitenciaLeds()------
void intermitenciaLeds()
{
for (int i = 0; i<27; i++) // 4 sgdos de parpadeo, paro motor y salida en dirección inversa
{
digitalWrite (leds, HIGH);
delay(100);
digitalWrite (leds, LOW);
delay(50);
}//fin for
} //fin intermitenciaLeds()
//-----------------------------------------
PROGRAMA EN APPINVENTOR 2
Para el control del coche por bluetooth de Andrés Lasry “mando.apk” y complementado por Joaquín
Berrocal, para la recepción de datos desde la placa Arduino Uno del coche hacia el teléfono. Marzo-2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017
Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Brazo robotico ksr10 ps2 x mayo 2015 a 9v_version_3
Brazo robotico ksr10 ps2 x  mayo 2015 a 9v_version_3Brazo robotico ksr10 ps2 x  mayo 2015 a 9v_version_3
Brazo robotico ksr10 ps2 x mayo 2015 a 9v_version_3
 
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2Proyecto brazo robotico ksr10  enero marzo 2015 a 9 v-version_2
Proyecto brazo robotico ksr10 enero marzo 2015 a 9 v-version_2
 
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pagAlarma arduino wavecom programa y esquema numeros borrados 48 pag
Alarma arduino wavecom programa y esquema numeros borrados 48 pag
 
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 5) DESARROLLO DE APLICACIONES CON #PIC16F886
 
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 3) DESARROLLO DE APLICACIONES CON #PIC16F886
 
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 4) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Informe N°2-Microcontroladores
Informe N°2-MicrocontroladoresInforme N°2-Microcontroladores
Informe N°2-Microcontroladores
 
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
⭐⭐⭐⭐⭐ (Práctica 6) DESARROLLO DE APLICACIONES CON PIC16F886
 
1. microcontrolador
1. microcontrolador1. microcontrolador
1. microcontrolador
 
Ejemplos pic c
Ejemplos pic cEjemplos pic c
Ejemplos pic c
 
Proyecto: Brazo mecanico con servomotor, potenciometro y arduino
Proyecto: Brazo mecanico con servomotor, potenciometro y arduinoProyecto: Brazo mecanico con servomotor, potenciometro y arduino
Proyecto: Brazo mecanico con servomotor, potenciometro y arduino
 
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
⭐⭐⭐⭐⭐ (Práctica 2) DESARROLLO DE APLICACIONES CON #PIC16F886
 
Seminari
SeminariSeminari
Seminari
 
Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
USBee_datasheet
USBee_datasheetUSBee_datasheet
USBee_datasheet
 
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
LECTOR DE TEMPERATURA CON LM35 Y MULTIPLEXOR DE DISPLAY DE 7 SEGMENTOS CON AR...
 
Usart 3
Usart 3Usart 3
Usart 3
 
Timers 2
Timers 2Timers 2
Timers 2
 
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328PMultiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
Multiplexor Display de 7 Segmentos con Arduino UNO ATmega328P
 
Adc 4
Adc 4Adc 4
Adc 4
 

Destaque

Ecowash presentación original
Ecowash presentación originalEcowash presentación original
Ecowash presentación original
Stefany Carpio
 
Ductos de lubricacion y refrigeracion
Ductos de lubricacion y refrigeracionDuctos de lubricacion y refrigeracion
Ductos de lubricacion y refrigeracion
briller
 
Sistemas de lubricación
Sistemas de lubricaciónSistemas de lubricación
Sistemas de lubricación
gonguibri
 
Proyecto car-wash
Proyecto car-washProyecto car-wash
Proyecto car-wash
acadaniel
 

Destaque (20)

CENTRO DE LAVADO ECOLÓGICO
CENTRO DE LAVADO ECOLÓGICOCENTRO DE LAVADO ECOLÓGICO
CENTRO DE LAVADO ECOLÓGICO
 
Ecowash presentación original
Ecowash presentación originalEcowash presentación original
Ecowash presentación original
 
Sistema Eléctrico de Carrocería Hyundai !!
Sistema Eléctrico de Carrocería Hyundai !!Sistema Eléctrico de Carrocería Hyundai !!
Sistema Eléctrico de Carrocería Hyundai !!
 
Ductos de lubricacion y refrigeracion
Ductos de lubricacion y refrigeracionDuctos de lubricacion y refrigeracion
Ductos de lubricacion y refrigeracion
 
Sistemas de lubricación
Sistemas de lubricaciónSistemas de lubricación
Sistemas de lubricación
 
Proyecto car-wash
Proyecto car-washProyecto car-wash
Proyecto car-wash
 
Sistemas de lubricación 33 diapo-2006-014-02- c
Sistemas de lubricación  33 diapo-2006-014-02- cSistemas de lubricación  33 diapo-2006-014-02- c
Sistemas de lubricación 33 diapo-2006-014-02- c
 
Anillos del piston
Anillos del pistonAnillos del piston
Anillos del piston
 
Electricidad básica 1 Hyundai!!
Electricidad básica 1 Hyundai!!Electricidad básica 1 Hyundai!!
Electricidad básica 1 Hyundai!!
 
planeación estratégica de un taller de servicio automotriz
planeación estratégica de un taller de servicio automotriz planeación estratégica de un taller de servicio automotriz
planeación estratégica de un taller de servicio automotriz
 
Perfektionismus vermeiden und dadurch Zeit sparen
Perfektionismus vermeiden und dadurch Zeit sparenPerfektionismus vermeiden und dadurch Zeit sparen
Perfektionismus vermeiden und dadurch Zeit sparen
 
HR Business Partner
HR Business PartnerHR Business Partner
HR Business Partner
 
IBERFASA
IBERFASAIBERFASA
IBERFASA
 
Una història de dones
Una història de donesUna història de dones
Una història de dones
 
Elsa I. Lara Landeo
Elsa I. Lara LandeoElsa I. Lara Landeo
Elsa I. Lara Landeo
 
Suchen und Finden im Netz
Suchen und Finden im NetzSuchen und Finden im Netz
Suchen und Finden im Netz
 
¿Qué es Bussi?
¿Qué es Bussi? ¿Qué es Bussi?
¿Qué es Bussi?
 
M-Files expandiert und wächst rasant in Europa
M-Files expandiert und wächst rasant in EuropaM-Files expandiert und wächst rasant in Europa
M-Files expandiert und wächst rasant in Europa
 
MyServicePortal.dokumente - Digitales Abrechnungsarchiv für die Personalabte...
MyServicePortal.dokumente  - Digitales Abrechnungsarchiv für die Personalabte...MyServicePortal.dokumente  - Digitales Abrechnungsarchiv für die Personalabte...
MyServicePortal.dokumente - Digitales Abrechnungsarchiv für die Personalabte...
 
Fullcar Services - Presentation independants
Fullcar Services - Presentation independants Fullcar Services - Presentation independants
Fullcar Services - Presentation independants
 

Semelhante a Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017

Robot seguidor de línea con software y hardware
Robot seguidor de línea con software y hardwareRobot seguidor de línea con software y hardware
Robot seguidor de línea con software y hardware
Namsohj Ozarazil
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
Angelik Hdez
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
Angelik Hdez
 

Semelhante a Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017 (20)

Proyecto brazo robotico ksr10 enero marzo 2015
Proyecto brazo robotico ksr10  enero marzo 2015Proyecto brazo robotico ksr10  enero marzo 2015
Proyecto brazo robotico ksr10 enero marzo 2015
 
Robot seguidor de línea con software y hardware
Robot seguidor de línea con software y hardwareRobot seguidor de línea con software y hardware
Robot seguidor de línea con software y hardware
 
8 entregable
8 entregable8 entregable
8 entregable
 
10.stock octubre 2015-ii-kit arduino
10.stock octubre   2015-ii-kit arduino10.stock octubre   2015-ii-kit arduino
10.stock octubre 2015-ii-kit arduino
 
Arduino
ArduinoArduino
Arduino
 
16072007 5220esp
16072007 5220esp16072007 5220esp
16072007 5220esp
 
Manual tk102 (2)
Manual tk102 (2)Manual tk102 (2)
Manual tk102 (2)
 
Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12Curso de microcontroladores capitulo 12
Curso de microcontroladores capitulo 12
 
Servo motor 360 con arduino
Servo motor 360 con arduinoServo motor 360 con arduino
Servo motor 360 con arduino
 
Estrategias de apoyo arduino uno
Estrategias de apoyo arduino unoEstrategias de apoyo arduino uno
Estrategias de apoyo arduino uno
 
Lab2 bluetooth.docx
Lab2 bluetooth.docxLab2 bluetooth.docx
Lab2 bluetooth.docx
 
Guia mci servo motor con arduino
Guia mci   servo motor con arduinoGuia mci   servo motor con arduino
Guia mci servo motor con arduino
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
 
62962340 manual-arduino-uno
62962340 manual-arduino-uno62962340 manual-arduino-uno
62962340 manual-arduino-uno
 
Micro2 tema 5
Micro2 tema 5Micro2 tema 5
Micro2 tema 5
 
151887351 comunicaciones-satelitales
151887351 comunicaciones-satelitales151887351 comunicaciones-satelitales
151887351 comunicaciones-satelitales
 
Proyecto
ProyectoProyecto
Proyecto
 
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINODISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
DISEÑO DE UN DETECTOR DE VELOCIDAD CON ARDUINO
 
guia de usuario gps.pdf
guia de usuario gps.pdfguia de usuario gps.pdf
guia de usuario gps.pdf
 
Micc final feb14_2009_soluc
Micc final feb14_2009_solucMicc final feb14_2009_soluc
Micc final feb14_2009_soluc
 

Mais de joaquinin1

Proyecto mi alarma_pbp_completo_48pag
Proyecto mi alarma_pbp_completo_48pagProyecto mi alarma_pbp_completo_48pag
Proyecto mi alarma_pbp_completo_48pag
joaquinin1
 
Sistema de carga y arranque del automovil 18 pag
Sistema de carga y arranque del automovil 18 pagSistema de carga y arranque del automovil 18 pag
Sistema de carga y arranque del automovil 18 pag
joaquinin1
 
Ruedas y neumáticos 69 pag bueno
Ruedas y neumáticos 69 pag buenoRuedas y neumáticos 69 pag bueno
Ruedas y neumáticos 69 pag bueno
joaquinin1
 
Direcciones peugeot 30 pag
Direcciones peugeot 30 pagDirecciones peugeot 30 pag
Direcciones peugeot 30 pag
joaquinin1
 
Suspensión camiones 45 pág c
Suspensión camiones 45 pág cSuspensión camiones 45 pág c
Suspensión camiones 45 pág c
joaquinin1
 
Sistema de carga y arranque del automovil 18 pag
Sistema de carga y arranque del automovil 18 pagSistema de carga y arranque del automovil 18 pag
Sistema de carga y arranque del automovil 18 pag
joaquinin1
 

Mais de joaquinin1 (19)

Simulador_CAN_OBD2_por_Joaquín_Berrocal_Piris_mayo_2023.pdf
Simulador_CAN_OBD2_por_Joaquín_Berrocal_Piris_mayo_2023.pdfSimulador_CAN_OBD2_por_Joaquín_Berrocal_Piris_mayo_2023.pdf
Simulador_CAN_OBD2_por_Joaquín_Berrocal_Piris_mayo_2023.pdf
 
Control_Temp_Hume_AC_junio_22.pdf
Control_Temp_Hume_AC_junio_22.pdfControl_Temp_Hume_AC_junio_22.pdf
Control_Temp_Hume_AC_junio_22.pdf
 
Proyecto bornera 60 +_94_pines_mayo_18_por_joaquin berrocal piris
Proyecto bornera 60 +_94_pines_mayo_18_por_joaquin berrocal pirisProyecto bornera 60 +_94_pines_mayo_18_por_joaquin berrocal piris
Proyecto bornera 60 +_94_pines_mayo_18_por_joaquin berrocal piris
 
Puente garaje-asm
Puente garaje-asmPuente garaje-asm
Puente garaje-asm
 
Incubadora con foto, esquemas y programa en PBP 19 pag
Incubadora con foto, esquemas y programa en PBP 19 pagIncubadora con foto, esquemas y programa en PBP 19 pag
Incubadora con foto, esquemas y programa en PBP 19 pag
 
Proyecto mi alarma_pbp_completo_48pag
Proyecto mi alarma_pbp_completo_48pagProyecto mi alarma_pbp_completo_48pag
Proyecto mi alarma_pbp_completo_48pag
 
Ascensor fotos esquemas_asm_y_hex
Ascensor fotos esquemas_asm_y_hexAscensor fotos esquemas_asm_y_hex
Ascensor fotos esquemas_asm_y_hex
 
Construcción máquina control numérico cnc agost-sept-2009_joaquin berrocal pî...
Construcción máquina control numérico cnc agost-sept-2009_joaquin berrocal pî...Construcción máquina control numérico cnc agost-sept-2009_joaquin berrocal pî...
Construcción máquina control numérico cnc agost-sept-2009_joaquin berrocal pî...
 
Control de 8 sensores de temperatura ds1621 en proteus eagle-asm-hex por joaq...
Control de 8 sensores de temperatura ds1621 en proteus eagle-asm-hex por joaq...Control de 8 sensores de temperatura ds1621 en proteus eagle-asm-hex por joaq...
Control de 8 sensores de temperatura ds1621 en proteus eagle-asm-hex por joaq...
 
Ruedas muy interesante _67_pag
Ruedas muy interesante _67_pagRuedas muy interesante _67_pag
Ruedas muy interesante _67_pag
 
Sistema de carga y arranque del automovil 18 pag
Sistema de carga y arranque del automovil 18 pagSistema de carga y arranque del automovil 18 pag
Sistema de carga y arranque del automovil 18 pag
 
Ac muy bueno 143 pag f sin logo
Ac muy bueno 143 pag f sin logoAc muy bueno 143 pag f sin logo
Ac muy bueno 143 pag f sin logo
 
Explicacion de la carga comprob f
Explicacion de la carga comprob fExplicacion de la carga comprob f
Explicacion de la carga comprob f
 
Climatizacion peugeot manual del alumno 76 pag interesante
Climatizacion peugeot manual del alumno 76 pag interesanteClimatizacion peugeot manual del alumno 76 pag interesante
Climatizacion peugeot manual del alumno 76 pag interesante
 
Comprobacion con reloj f
Comprobacion con reloj fComprobacion con reloj f
Comprobacion con reloj f
 
Ruedas y neumáticos 69 pag bueno
Ruedas y neumáticos 69 pag buenoRuedas y neumáticos 69 pag bueno
Ruedas y neumáticos 69 pag bueno
 
Direcciones peugeot 30 pag
Direcciones peugeot 30 pagDirecciones peugeot 30 pag
Direcciones peugeot 30 pag
 
Suspensión camiones 45 pág c
Suspensión camiones 45 pág cSuspensión camiones 45 pág c
Suspensión camiones 45 pág c
 
Sistema de carga y arranque del automovil 18 pag
Sistema de carga y arranque del automovil 18 pagSistema de carga y arranque del automovil 18 pag
Sistema de carga y arranque del automovil 18 pag
 

Último

PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
lupitavic
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
UPTAIDELTACHIRA
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
patriciaines1993
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
EliaHernndez7
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
RigoTito
 

Último (20)

SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
SESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.docSESION DE PERSONAL SOCIAL.  La convivencia en familia 22-04-24  -.doc
SESION DE PERSONAL SOCIAL. La convivencia en familia 22-04-24 -.doc
 
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLAACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
ACRÓNIMO DE PARÍS PARA SU OLIMPIADA 2024. Por JAVIER SOLIS NOYOLA
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docxPLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
PLAN DE REFUERZO ESCOLAR MERC 2024-2.docx
 
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdfNUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
NUEVAS DIAPOSITIVAS POSGRADO Gestion Publica.pdf
 
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
2024 KIT DE HABILIDADES SOCIOEMOCIONALES.pdf
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
Abril 2024 - Maestra Jardinera Ediba.pdf
Abril 2024 -  Maestra Jardinera Ediba.pdfAbril 2024 -  Maestra Jardinera Ediba.pdf
Abril 2024 - Maestra Jardinera Ediba.pdf
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Proyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdfProyecto de aprendizaje dia de la madre MINT.pdf
Proyecto de aprendizaje dia de la madre MINT.pdf
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLAACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
ACERTIJO DE POSICIÓN DE CORREDORES EN LA OLIMPIADA. Por JAVIER SOLIS NOYOLA
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
🦄💫4° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
2 REGLAMENTO RM 0912-2024 DE MODALIDADES DE GRADUACIÓN_.pptx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VSSEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
SEPTIMO SEGUNDO PERIODO EMPRENDIMIENTO VS
 

Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017

  • 1. Coche por bluetooth controlado por la aplicación en appinventor 2 de Andrés Lasry “mando.apk” y complementada por Joaquín Berrocal, para la recepción de datos desde la placa Arduino Uno del coche hacia el teléfono. Marzo-2017 Carcasa utilizada; Coche CYBOT 950 del 2001 Información circuitería de la placa driver: http://www.lpilsley.co.uk/cybot/driver.htm
  • 2.
  • 3.
  • 4.
  • 5.
  • 6. Como se puede ver en el display marca 15 cm ------ 150 mm De distancia al sensor frontal bluetooh. Prueba realizada OK ver imágenes de abajo. También se ve que la distancia a objeto frontal que ha de pararse cuando va caminado de frente es a unos 28 cm. OK
  • 7.
  • 8. POSICIONES DEL JOYSTICK DEL MANDO DEL TFNO.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. /*"COCHE_POR_BT_Joaquin_Berrocal.ino" realizado por: JOAQUÍN BERROCAL PIRIS para "curso 17S1AR001 de Andrés Lasry" Nov16-Feb17 Se trata de utilizar una aplicación bluetooth por él realizada para enviar datos desde el telefono móvil a la placa Arduino. La aplicación la tiene realizada en ANDROID por APPINVENTOR2. es configurable los valores que envía. por defecto tiene los siguientes; 1 2 3 4 5 6 7 8 9 - Lo utilizaré para manejar mi coche CYBOT950 Eaglesmoss del 2001. Dirección web sobre el coche http://www.lpilsley.co.uk/cybot/driver.htm el cual dispone; + de una placa driver par activar los motores Le incorporo: + Una placa BT HC05 para la recepción bluetooth + Dos sensores de distancia HC-SR04, que pueden medir distancias entre 2 cm a 4mts con una precisión de 3mm + Dos leds que podrán ser activados desde el bluetooch + Programa "mando_mio_V1.aia" que realizo basado en el "mando.aia" de Andrés lasry. Le tengo hecho las siguientes modificaciones: + Permitirá la recepción de datos del arduino al móvil. es decir: + Permitirá ver en el tfno sobre el LCD, los valores de distancia al objeto de forma contínua + Se podrán encender o apagar los leds desde el tfno. + Todas las posiciones del Joystick ejecutan una función ----posición Joystick Android y actuación---- posicion 1 : Activa leds posicion 7 : los apaga. posición 2 : Marcha adelante. posición 8 : Marcha Atrás posición 4 : Marcha a Izquierda; girará aprox 90º y continuará de frente. posición 6 : Marcha a derecha; girará aprox 90º y continuará de frente. posición 3 : Gira sobre sí mismo a Dcha posición 7 : gira sobre sí mismo a Izqda. Todas estas posiciones se verán reflejadas sobre la LCD del móvil, así como el valor en centímetros de la distancia a los objetos de la parte frontal y trasera del coche. Claramente estos datos serán enviados de la placa arduino al móvil de forma constante. La dificultad del proyecto ha estado en el envío, no de uno, si no de tres datos diferentes al móvil tratando siempre de conseguir rapida respuesta del tfno móvil con la placa arduino del coche en el envío y re ------------- Para activar los 2 motores;---------------- - Giro hacia adelante: pines arduino 3 y 5 a nivel HIGH (con 1-3 de la placa driver) - Giro hacia atrás: pines arduino 6 y 9 a nivel HIGH (con 2-4 de la placa driver) - Giro a Dcha: pines arduino 3 en LOW y pin 5 en HIGH - Giro a izqda: pines arduino 3 en HIGH y pin 5 en LOW - Giro sobre sí mismo a Dcha : analogWrite(3,0); analogWrite (5,125); - Giro sobre sí mismo a Izqda : analogWrite(3,125); analogWrite (5,0); ----------------------------------------------------------- OBSERVACIONES: La velocidad se irá reduciendo a medida que se vaya acercando a cualquier obstáculo que se encuentre por delante o detrás del vehículo. Si se sobrepasa la distancia mínima, se producirá una intermitencia de los leds durante 4 segundos, y acto seguido, invertirá la marcha durante 1 sg para salir de esa posición, quedandosé en posición de "Parado" a la espera de recibir ordenes desde el joystick del mando. ------------Conexionado de la placa driver.------- Conector de 7 pines Nota RH y LH significan motor Righ (motor dcho, motor Left (motor izqdo) ---Motores hacia adelante, poner los pines 1-3 en high de la placa driver--- (que corresponden con el pin 3 y 5 de arduino en HIGH) 1 - RH motor 3 - LH motor ---Motor hacia Atrás, poner los pines 2-4 en high de la placa driver--- (que corresponden con el pin 6 y 9 de arduino en HIGH) 2 - RH motor
  • 19. 4 - LH motor 5 - 5 volts ,se puede usar como alimentación a otros elementos 6 - 6 volts , " " " " " " " 7 - ground. Conector de 4 pines 1 - ground. 2 - ground. 3 - 9 volts in procedente de la pila de 9V 4 - 6 volts in.procedente de las 4 pilas de 1.5V ------------------------- conector MT1; es el LH Motor (motor de la izqda) conector MT2; es el LR Motor (motor de la dcha) ++++++Conexionado ARDUINO PLACA DRIVER ++++++ ARDUINO PLACA DRIVER MT2R_GiroAdelante pin 3PWM --------- 1 MT1L_GiroAdelante pin 5PWM --------- 3 MT2R_GiroAtras pin 6PWM ------------ 2 MT2L_GiroAtras pin 9PWM ------------ 4 GND -------------------------------- 7 GND para unificar masas. 5 salida de la placa driver a + 5V 6 salida a +6V de la placa driver ----Conexionado Arduino sensor de distancia HC-SR04------ ARDUINO HC-SR04 2 como salida ----- TriggerDtero 4 como entrada ---- echoDtero. 7 como salida ----- TriggerTrasero 8 como entrada ---- echoTrasero. --------Conexionado Arduino sensor BlueTooth HC05--------- ARDUINO Sensor blueTooth HC05 10RX -------- Con pin Tx Bluetooth 11TX -------- Con pin Rx Bluetooth OBSERVACIONES: El bluetooth HC05 (que es maestro/esclavo)debemos siempre mandarle al final de cada comando r,n .Para ello configurar el monitor/terminal serial de arduino, para que envíe: "ambos NL & CR" Y lo mismo si lo hacemos de cualquier aplicación android como en este caso. ---------------------------------------------------------- ARDUINO 12 ----- activa dos leds azules que ya llevan R de 68ohm ----------------------------------------------------------- */ #include < SoftwareSerial .h> //Para manejo bluetooth HC05 //permite asignar otros puertos distinto al serial para poder utilizarlo en conjunto //Para utilizar a la par la comunicación con el Serial Monitor que utiliza los pines 0 RX y 1 Tx //y la comunicación BLUETOOH pines que le asigno el pin 10RX y 11Tx intercambiarlos con los de //la placa bluetooth 10Rx con el Tx y el 11Tx con el Rx de la placa bluetooth HC05 //---variables globales------- const int nLecturas=10; //para hacer 1/2 de 10 lecturas BT int lecturas[nLecturas]; //array para guardar últimas lecturas BT int indice = 0; int total = 0; unsigned int media = 0; //media de las lecturas unsigned int media1=0; //media del sensor frontal unsigned int media2=0; //media del sensor trasero String direccion = ""; unsigned long tiempo = 0; unsigned long distancia = 0; int distanciaMinima= 25; //valor inicial 25cm int tiempoGirar = 100; //tiempo para hacer girar corresponde aprox a 90º int tiempoParada = 100; //tiempo para que paren motores int dato = '5'; //inicia posición reposo joystick ""Ponerlo entre comillas"" o se verá mal en lcd. const int MT2R_GiroAdelante=3; //unido al pin 1 de la placa driver MT2 hacia adelante
  • 20. const int MT1L_GiroAdelante=5; //unido al pin 3 de la placa driver MT1 hacia adelante const int MT2R_GiroAtras=6; //unido al pin 2 de la placa driver MT2 hacia atrás const int MT1L_GiroAtras=9; //unido al pin 4 de la placa driver MT1 hacia atrás const int leds = 12;//para activar leds en la pro micro el 20 const int triggerF = 2;// para activar el trigger del sensor distancia HC-SR04 Frontal const int echoF = 4;// por donde recibe señal del sensor frontal const int triggerT = 7;// para activar el trigger del sensor distancia HC-SR04 Trasero const int echoT = 8;// por donde recibe señal del sensor Trasero //--------------------PROGRAMA----------------- /* OBSERVACIÓN MUY IMPORTANTE: sobre las limitaciones de la librería "SoftwareSerial (Rx,Tx);" http://manueldelgadocrespo.blogspot.com.es/p/biblioteca.html No todos los pines en la Mega y Mega 2.560 soportan interrupciones de cambio de nivel, por lo que solamente la siguiente puede ser utilizado para RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 ( 63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69). No todos los pines de las placas Leonardo y Micro soportan interrupciones de cambio de nivel, así que solamente los siguientes se pueden utilizar para RX: 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI). En Arduino o Genuino 101 la velocidad máxima actual de RX es de 57600bps En Arduino o Genuino 101 RX no funciona en el pin 13 */ //si utilizo la PRO MICRO El pin 10 de arduino pro micro hace de RX y 16 de TX SoftwareSerial bt(10,11); //en la uno 10RX Y 11TX ; intercambiarlos con la placa //bluetooth HC05, es decir, // unir pin10(RX)con ------> TX placa bluetooth HC05 //y el pin 11 (TX)con ------> RX placa bluetooth HC05 String posicJoystickGiroMot[]= {"ADELANTE" ,"ATRAS ","IZQUIERDA" ,"DERECHA " ,"PARADO " ,"LEDS ON void setup() { //--configuracion pines de salida y entrada--- //OUTPUT 2-3-5-6-7-9 y el 20 INPUT 4-8 conectados al pin "echo" del sensor ultrasónico Frontal - Trasero //los pines 10Rx y 11Tx para el bluetooth no hace falta configurarlos for (int i=2;i<=9;i++) { if ((i == 4)or (i==8)) { pinMode (i,INPUT); //configura como entrada el 4 y 8 continue ; // salta de nuevo al for sin hacer lo de más abajo }// pinMode (i,OUTPUT ); digitalWrite (i,LOW); //los inicializa a cero } //fin for pinMode (leds, OUTPUT ); //pin 12 activar leds como salida digitalWrite (leds, LOW); //inicia a nivel 0 //--------------------------------- // MI PLAQUITA bluetooh va a "9600". //la comunicación con la placa bluetooth HC05 sólo acepta 9600 baudios. bt.begin(9600); //serial bluetooth Serial .begin(9600); //Serial arduino; acepta todas las velocidades //---------------------------------------------------------------- }// fin setup (); //---------------------------------------------------------------- void loop() { //-------------MENSAJES DISTANCIA AL MÓVIL--------- //int medidorDistancias (byte pinTrigger,byte pinEcho,int distancia) medidorDistancias (2,4,distanciaMinima);
  • 21. media1= media; //"Distancia Frontal: " medidorDistancias (7,8,distanciaMinima); media2= media; //"Distancia Trasera: " // sprintf(buffer,"%d,%d",media1,media2);//no acepta el sprintf(buffer,"%s,%d,%d",direccion,media1,media2); //----ENVÍO AL SERIAL se puede suprimir------------ Serial .println (direccion); //variable global con la dirección que toma el vehículo Serial .print(media1); //Sensor Delantero Serial .println (" cm"); Serial .print(media2); //Sensor Trasero Serial .println (" cm"); //----- SENSORES DE DISTANCIA SR-HC04------------ //----------ENVÍO DE DATOS AL MÓVIL--------------- bt.print(direccion); //index 1 variable global con la dirección que toma el vehículo. //sensor ultrasonico Frontal bt.print("/"); //separador bt.print(media1); //index 2 Sensor Delantero bt.print(" cm"); bt.print("/");//separador para lectura del siguiente sensor ultrasónico //sensor ultrasonico Trasero bt.print(media2); //index 3 Sensor Trasero bt.print(" cm"); bt.print("/"); //separador para lectura del siguiente sensor ultrasónico //--------------------------------------------------- } // fin loop() //++++++++++++++++FUNCIONES UTILIZADAS++++++++++++++++ // ----FUNCIÓN DE LECTURA PUERTO BLUETOOTH---- // lo pongo aquí para que lea de forma constante y se pueda tener //respuesta más inmediata a los botones del Joystick móvil void lecturaPuertoBT() { while(bt.available ()>0) { int datoprueba = bt.read();//variable entera global if ((datoprueba!=13)and (datoprueba!=10)) { dato = datoprueba; } // En la función "switch" el valor a comparar "case X: " X sólo puede ser de tipo entero. //otros lenguajes sí lo aceptan pero arduino NO: No obstante, he probado que si pongo //en los "case" el valor entero a comprobar entre comillas; ej case '2' todo ok SI LO ACEPTA //es decir el valor enviado por el mando bluetooth es el entero 2. Si lo pongo sin comillas no lo acepta switch (dato) //comprobamos el caracter que nos llega { //---para activar o desactivar los leds pin 12 --- case '1': { Serial .println (posicJoystickGiroMot[5]); //GIRO HACIA ADELANTE direccion = "LEDS ON "; //ajustado a 11 caracteres+espacios en el appinventor digitalWrite (leds, HIGH);// pin 12 break; } case '9': { Serial .println (posicJoystickGiroMot[6]); //GIRO HACIA ADELANTE
  • 22. direccion = "LEDS OFF " ;//ajustado a 10 11 digitalWrite (leds, LOW);// pin 12 break; } //------------------------------------------------- case '2': { Serial .println (posicJoystickGiroMot[0]); //GIRO HACIA ADELANTE direccion = "ADELANTE" ; //ajustado a 8 apagarTodos(); giroAdelante(); //pin 1 y 3 en HIGH break; } case'8': { Serial .println (posicJoystickGiroMot[1]); //GIRO HACIA ATRÁS direccion = "ATRAS "; //ajustado a 13 apagarTodos(); giroAtras(); //pines 6 y 9 en HIGH break; } case'4': { Serial .println (posicJoystickGiroMot[2]); //GIRO A IZQDA direccion = "IZQUIERDA" ;//ajustado a 9 apagarTodos(); //luego activa el nuevo giro digitalWrite (MT2R_GiroAdelante, HIGH);// pin 3 digitalWrite (MT1L_GiroAdelante, LOW);// pin 5 delay(tiempoGirar); //tiempo para girar apagarTodos(); giroAdelante(); //pin 1 y 3 en HIGH break; } case'6': { Serial .println (posicJoystickGiroMot[3]); //GIRO A DCHA direccion = "DERECHA " ; //ajustado a 9 //primero desactiva TODOS los MOTORES apagarTodos(); //luego activa el nuevo giro digitalWrite (MT2R_GiroAdelante, LOW);// pin 3 digitalWrite (MT1L_GiroAdelante, HIGH);// pin 5 delay(tiempoGirar); //tiempo para girar apagarTodos(); giroAdelante(); //pin 1 y 3 en HIGH break; } case'5': { Serial .println (posicJoystickGiroMot[4]); //VEHÍCULO PARADO direccion = "PARADO " ; //ajustado a 11 apagarTodos(); break; } // -----hacer rotar de forma continua a Dcha o a Izqda------ case'3': //giro a DCHA continuo { Serial .println (posicJoystickGiroMot[2]); //GIRO A DCHA direccion = "GIRO >>>>" ;//ajustado a 9 apagarTodos(); //luego activa el nuevo giro analogWrite (MT2R_GiroAdelante,0); // pin 3 analogWrite (MT1L_GiroAdelante,125); // pin 5 break; } case'7': //giro a IZQDA continuo {
  • 23. Serial .println (posicJoystickGiroMot[2]); //GIRO A IZQDA direccion = "<<<< GIRO" ;//ajustado a 9 apagarTodos(); //luego activa el nuevo giro analogWrite (MT2R_GiroAdelante,125); // pin 3 analogWrite (MT1L_GiroAdelante,0); // pin 5 break; } //---------------------------------------------------------- } //fin del switch(dato) } //fin if bt.available()>0 }//fin void lecturaPuertoBT //-------------------------------------------- //++++FUNCIÓN medidorDistancias ()++++ //------------instrucciones para el control de la distancia ---- //--si es menor a una distancia que especifiquemos se parara---- // se hace una media de 10 lecturas para dar un valor más estbilizado int medidorDistancias (byte pinTrigger,byte pinEcho,int distMinima) { total = 0; // Sí lo necesito al no utilizar el array int lecturas[nLecturas]; indice = 0; //reiniciamos el indice. while (indice < nLecturas) { digitalWrite (pinTrigger, LOW); //activación pinTrigger 2 - 7 sensores frontal-trasero delayMicroseconds (5); //para estabilizar otros le dan sólo 2 us digitalWrite (pinTrigger, HIGH); delayMicroseconds (10); //ha de ser 10 us para el sensor HC-SR04 otros sensores le dan sólo 5 us. digitalWrite (pinTrigger, LOW); //paro la activación y comienza el envío de la señal ultrasónica //por el pin "echo" se empieza a recibir una señal HIGH la función pulsein(), pausa el sketc //para contar el tiempo transcurrido hasta recibir el rebote, momento en el cual por el pi //"echo" pasa a detectarse una señal LOW y pulseIn() devuelve su resultado en microsegundos // http://manueldelgadocrespo.blogspot.com.es/p/pulsin.html tiempo = pulseIn (pinEcho, HIGH);//receptor pinEcho 4 - 8 sensores frontal-trasero distancia = 0.01717*tiempo; // considero la velocidad del sonido como 343,2m/s según la wiki a 20 //dando un resultado de 0.01717cm por cada microsegundo considerando total= total + distancia; indice = indice + 1; lecturaPuertoBT(); // si lo dejo me sube el contaje de la distancia delayMicroseconds (25); //tiempo mínimo entre lecturas es de 20 us. }//fin while indice <= nlecturas media = total / nLecturas; //en cm //Según donde mires dicen que el sensor de distancia mide desde //los 2cm a 4 ó 5 o incluso 7 metros con una precision de 3 mm. //para evitar posibles problemas limito su lectura en 400 if (media > 400){media = 400;} controlDistMinima(); }//fin función medidorDistancias (...) //-------------------------------------------------------------- //++++++++++++FUNCIÓN controlDistMinima()++++++++++ //Evita se pase, y si lo hace para,parpadean los leds y retrocede-avanza un tiempo void controlDistMinima() { // if (dirección != direccionPrevia) ///// { direccionPrevia = direccion; //evita que //---------------------al 100% máxima velociad-------- if ((media >= distanciaMinima + 75)and (direccion == "ADELANTE" )) {
  • 24. digitalWrite (MT2R_GiroAdelante, HIGH);// pin 3 analogWrite(MT2R_GiroAdelante,255);// pin 3 digitalWrite (MT1L_GiroAdelante, HIGH);// pin 5 analogWrite(MT1L_GiroAdelante,255);// pin 5 } if ((media >= distanciaMinima + 75)and (direccion == "ATRAS ")) // ajustado a 13 { digitalWrite (MT2R_GiroAtras, HIGH);// pin 6 analogWrite(MT2R_GiroAtras,255);// pin 6 digitalWrite (MT1L_GiroAtras, HIGH);// pin 9 analogWrite(MT1L_GiroAtras,255);// pin 9 } //------------------------al 50% velocidad----------- if ((media >= distanciaMinima + 50)and (media < distanciaMinima + 75)and (direccion == "ADELANTE" )) { analogWrite (MT2R_GiroAdelante,125); // pin 3 digitalWrite(MT2R_GiroAdelante,HIGH);// pin 3 analogWrite (MT1L_GiroAdelante,125); // pin 5 digitalWrite(MT1L_GiroAdelante,HIGH);// pin 5 } if ((media >= distanciaMinima + 50)and (media < distanciaMinima + 75)and(direccion == "ATRAS ") { analogWrite (MT2R_GiroAtras,125); // pin 6 digitalWrite(MT2R_GiroAtras,HIGH);// pin 6 analogWrite (MT1L_GiroAtras,125); // pin 9 digitalWrite(MT1L_GiroAtras,HIGH);// pin 9 } //------------------------al 28% velocidad----------- if ((media >= distanciaMinima + 25)and (media < distanciaMinima + 50)and (direccion == "ADELANTE" )) { analogWrite (MT2R_GiroAdelante,70); // pin 3 digitalWrite(MT2R_GiroAdelante,HIGH);// pin 3 analogWrite (MT1L_GiroAdelante,70); // pin 5 digitalWrite(MT1L_GiroAdelante,HIGH);// pin 5 } if ((media >= distanciaMinima + 25)and (media < distanciaMinima + 50) and(direccion == "ATRAS " { analogWrite (MT2R_GiroAtras,70); // pin 6 digitalWrite(MT2R_GiroAtras,HIGH);// pin 6 analogWrite (MT1L_GiroAtras,70); // pin 9 digitalWrite(MT1L_GiroAtras,HIGH);// pin 9 } //------------------------al 20% velocidad----------- if ((media >= distanciaMinima + 10)and (media < distanciaMinima + 25)and (direccion == "ADELANTE" )) { analogWrite (MT2R_GiroAdelante,50); // pin 3 digitalWrite(MT2R_GiroAdelante,HIGH);// pin 3 analogWrite (MT1L_GiroAdelante,50); // pin 5 digitalWrite(MT1L_GiroAdelante,HIGH);// pin 5 } if ((media >= distanciaMinima + 10)and (media < distanciaMinima + 25) and(direccion == "ATRAS " { analogWrite (MT2R_GiroAtras,50); // pin 6 digitalWrite(MT2R_GiroAtras,HIGH);// pin 6 analogWrite (MT1L_GiroAtras,50); // pin 9 digitalWrite(MT1L_GiroAtras,HIGH);// pin 9 } //------Parar + intermit Leds + invertir sentido giro durante 1sg a 1/2 velocidad ------- // ----y poner dato ='5' para parar motor a espera orden de joystick del móvil----------- //A (media < distanciaMinima +10) parar 100ms + intermit leds ( 4 sgdos)+ invertir trayectoria para salir //de esa posición. Se evita que choque con objetos que pueda encontrar de frente o por la parte trasera if ((media < distanciaMinima +10 )and (direccion == "ADELANTE" )) { apagarTodos(); //detenerlo + intermit leds + salida direccion inversa intermitenciaLeds(); //intermitencia 10ms + tiempoParada digitalWrite (MT2R_GiroAtras, HIGH); digitalWrite (MT1L_GiroAtras, HIGH); delay(1000); //para que salga dato = '5'; // para que se pare el motor } if ((media < distanciaMinima + 10) and(direccion == "ATRAS ")) { apagarTodos(); //detenerlo + intermit leds + salida direccion inversa intermitenciaLeds(); //intermitencia 10ms + tiempoParada digitalWrite (MT2R_GiroAdelante, HIGH); digitalWrite (MT1L_GiroAdelante, HIGH); delay(1000); //para que salga dato = '5'; // para que se pare el motor }
  • 25. }//fin función controlDistMinima() //----------------------------------------------------------- //++++FUNCIÓN giroAdelante()++++ void giroAdelante() { digitalWrite (MT2R_GiroAdelante, HIGH);// pin 3 digitalWrite (MT1L_GiroAdelante, HIGH);// pin 5 }//fin función void giroAdelante() //----------------------------------------------------------- //++++FUNCIÓN void giroAtras()++++ void giroAtras() { digitalWrite (MT2R_GiroAtras, HIGH);// pin 6 digitalWrite (MT1L_GiroAtras, HIGH);// pin 9 }//fin función void giroAtras() //----------------------------------------------------------- // se pondrán a nivel 0 la activación a los motores cuando se cambie // de posición el Joystick o bien cuando esté en posición neutra //y se le dará un pequeño tiempo(tiempoParada = 100) para hacer suaves los cambios //++++FUNCIÓN apagarTodos()++++ void apagarTodos() { for (int i=2;i<=9;i++) { if ((i == 4)or (i==8))//el 4 y el 8 son entradas de los "echo" sensor distacia HC-SR04 { continue ; // salta de nuevo al for sin hacer lo de más abajo }// digitalWrite (i,LOW); //pone a nivel 0 las salidas } //fin for delay(tiempoParada); //tiempo para que se paren todos los motores }//fin función void apagarTodos() //----------------------------------------------------------- //-----------FUNCIÓN intermitenciaLeds()------ void intermitenciaLeds() { for (int i = 0; i<27; i++) // 4 sgdos de parpadeo, paro motor y salida en dirección inversa { digitalWrite (leds, HIGH); delay(100); digitalWrite (leds, LOW); delay(50); }//fin for } //fin intermitenciaLeds() //-----------------------------------------
  • 26. PROGRAMA EN APPINVENTOR 2 Para el control del coche por bluetooth de Andrés Lasry “mando.apk” y complementado por Joaquín Berrocal, para la recepción de datos desde la placa Arduino Uno del coche hacia el teléfono. Marzo-2017