Download - Proyecto coche por bluetooth por joaquin berrocal piris marzo 2017

Transcript

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.htmel 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óviltratando siempre de conseguir rapida respuesta del tfno móvil con la placa arduino del coche en el envío y recepción de datos

------------- 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 encuentrepor 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 pinesNota 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 elementos6 - 6 volts , " " " " " " "7 - ground.

Conector de 4 pines1 - ground.2 - ground.3 - 9 volts in procedente de la pila de 9V4 - 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 DRIVERMT2R_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-SR042 como salida ----- TriggerDtero4 como entrada ---- echoDtero.

7 como salida ----- TriggerTrasero8 como entrada ---- echoTrasero.

--------Conexionado Arduino sensor BlueTooth HC05---------ARDUINO Sensor blueTooth HC0510RX -------- Con pin Tx Bluetooth11TX -------- 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.----------------------------------------------------------ARDUINO12 ----- 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 BTint 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 motoresint 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ásconst 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 Frontalconst int echoF = 4;// por donde recibe señal del sensor frontal

const int triggerT = 7;// para activar el trigger del sensor distancia HC-SR04 Traseroconst 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.htmlNo 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 57600bpsEn 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 TXSoftwareSerial 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 salidadigitalWrite (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 TraseroSerial.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 appinventordigitalWrite (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 girodigitalWrite (MT2R_GiroAdelante, HIGH);// pin 3digitalWrite (MT1L_GiroAdelante, LOW);// pin 5delay(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 girodigitalWrite (MT2R_GiroAdelante, LOW);// pin 3digitalWrite (MT1L_GiroAdelante, HIGH);// pin 5delay(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 3analogWrite (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 3analogWrite (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-traserodelayMicroseconds (5); //para estabilizar otros le dan sólo 2 usdigitalWrite (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 sketch //para contar el tiempo transcurrido hasta recibir el rebote, momento en el cual por el pin

//"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ºC

//dando un resultado de 0.01717cm por cada microsegundo considerando solo el tiempo de ida.

total= total + distancia; indice = indice + 1;

lecturaPuertoBT(); // si lo dejo me sube el contaje de la distanciadelayMicroseconds (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 3analogWrite (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 6analogWrite (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 3analogWrite (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 6analogWrite (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 3analogWrite (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 6analogWrite (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 3digitalWrite (MT1L_GiroAdelante, HIGH);// pin 5

}//fin función void giroAdelante()//-----------------------------------------------------------//++++FUNCIÓN void giroAtras()++++

void giroAtras() {

digitalWrite (MT2R_GiroAtras, HIGH);// pin 6digitalWrite (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 fordelay(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