TeLEOsketch. Un experimento con arduino, bluetooth, appinventor y android.

Hola a todos,

   He titulado esta entrada con el nombre del programa que os voy a presentar. Se trata de una versión moderna del antiguo juego Telesketch. Si, esa pantalla con un par de botones imitando una pantalla de televisión inventada por el francés André Cassagnes fallecido en enero de este mismo año, 2013. Si recordáis, consistía en realizar dibujos moviendo los dos mando para ir dibujando por la pantalla con un puntero que hacía un dibujo continuo. Para borrar el dibujo y empezar uno nuevo, tenías que poner el telesketch boca abajo y agitarlo. Os pongo el vídeo de mi invento y luego paso a comentaros los elementos que he utilizado.





   Como podéis ver he usado para el mando un arduino uno y dos potenciómetros conectados a las entradas analógicas A0 y A1. También he usado el mismo módulo bluetooth que utilicé en el coche bluetooth, conectado a los pines serie del arduino. Lo alimento todo con una pila de 9v. El programa es bastante simple. Como solo quiero transmitir los valores de los dos potenciómetros al smartphone con android, lo que hago es chequear los valores de ambas entradas analógicas y transmitirlas por el puerto serie, sin ningún tipo de protocolo. Os copio el código:


void setup() {

  Serial.begin(9600); // abre el puerto serie y establece la velocidad en 9600 bps

}

void loop() {

  Serial.write(analogRead(0)/4);
  Serial.write(analogRead(1)/4);
  delay(100);

}


   Como podéis comprobar no puede ser más simple. El valor leído de las entradas analógicas (entre 0 y 1023) lo divido por 4 para que me de un valor entre 0 y 255, 1 byte, que es lo que puedes transmitir por el puerto serie. Podría haber separado la lectura en dos bytes, pero con esta resolución es suficiente y la idea, vuelvo a repetir, era hacerlo de la forma más simple posible.

   Todo esto empezó buscando una idea para hacer algo tangible con android usando el appinventor para ver que era capaz de hacer. Para el que no lo sepa, la aplicación appinventor fue, valga la redundancia, un invento de google labs que consistía en un sistema visual online para programar aplicaciones en android que pudiera usar cualquier persona solo con unos conocimientos básicos de programación. Google abandonó el proyecto y fué retomado por el mit, Massachusetts Institute of Technology, sus creadores, y en mi opinión, mejorado notablemente.

   Estas imagenes muestran la pantalla de diseño del layout del programa y los bloques de programación de la aplicación.


   Esta es la pantalla del explorador en la que definimos el layout o vista de la aplicación. En este caso he usado una sola vista que en appinventor se llaman Screen. Luego vas poniendo los elementos que necesites. En mi caso dos objetos lienzo (canvas), uno para la imagen del telesketch y otro para la pantalla gris de dibujar, un objeto texto, un boton para la lista de selección del dispositivo bluetooth, un boton para empezar a dibujar y luego una serie de elementos no visibles como el cliente bluetooth, el notificador de eventos, relog, acelerómetro (para detectar que le damos la vuelta a la pantalla y borrar el teLEOsketch, y un objeto de base de datos para almacenar el dispositivo bluetooth, en nuestro caso el mando realizado con el arduino, y que no tengamos que conectarlo cada vez que iniciamos la aplicación. Una vez hemos definido todos los elementos, pasamos a lanzar el editor de bloques que es donde programamos realmente la aplicación, pero usando bloques visuales. ¿No os suena al diseño de aplicaciones con scratch?


   He intentado distribuirlos todos por la pantalla para hacer que salgan todos de un vistazo. Esto es más largo de explicar. Si alguien está practicando con el appinventor y quiere preguntarme alguna duda no tienen nada más que hacerlo en comentarios. Para el que sea la primera vez que ve esto, se trata de añadir variables, reescribir el código para cada evento de cada objeto que hemos introducido en nuestra screen de usuario y probarlo todo, bien en el emulador o bién directamente en nuestro smartphone. Esta parte está muy bién. Tienen una aplicación que conecta por wifi el dispositivo android con el editor y tienes el programa corriendo en tiempo real mientras lo modificas. Es la parte que más me ha gustado.

   También puedes crear tus própias funciones, como la que podéis ver arriba en la parte central que se llama map. Lo que hago con ella es mapear el valor leido del potenciómetro, en el rango de 0 a 255, al rango que yo quiera para adaptarme al tamaño de la pantalla del dispositivo que esté corriendo el programa. Como véis la uso cada vez que leo un valor por el bluetooth y quiero dibujarlo en el lienzo. He usado una sola screen, o layout o pantalla. Lo que hago al pulsar el botón de dibujar es ocultar los elementos del menú y el lienzo del dibujo del telesketch y hago visible el lienzo de dibujar. Para borrarlo, uso el sensor de posición para detectar que ponemos el teléfono boca abajo. Cuando estamos dibujando, el objeto reloj que he puesto en la pantalla de diseño, es el que nos permite ir leyendo la entrada de datos cada cierto intervalo de tiempo y dibujando en la pantalla.

   Espero que os guste.
   
   

Comentarios

  1. Espectacular!. Tengo un millon de dudas con el app inventor, me recomiendas algun sitio (si puede ser en español)? Gracias.

    ResponderEliminar
    Respuestas
    1. Hola, gracias por tu comentario. En el sitio del appinventor del mit tienes toda la información, pero claro, está en inglés. Si te interesan estos temas lo mejor es leerlo directamente. Gracias.

      Eliminar
    2. Hola de nuevo:
      Veo en tu programa que mapeas una variable pero no encuentro la funcion por ningun lado.¿podrias decirme donde buscarla??. Gracias

      Eliminar
  2. Esta muy bien tu aporte ,solo una duda ,como crear la funcion map ,te gradeceria si pusieras una imagen con el cuadro desplegado ,saludos

    ResponderEliminar
  3. Yo tambien estoy interesado en la funcion map, no logro que me funcione... hago

    valor * out_max /255

    ResponderEliminar
  4. Muchas gracias, me has ayudado a comunicar mi Arduino con mi móvil.

    ResponderEliminar
  5. Buenas estoy también probando la conexión arduino app inventor a través del bluetooth, en una pantalla tengo 8 botones y yo quiero enviar los titulos de los botones los textos a través de bluetooth y poner los en los botones tienes alguna idea? muchas gracias saludos

    ResponderEliminar
  6. hola como puedo contactarte crma23051979@gmail.com

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Mirrorlink. Smartphone Samsung Galaxy A5 y Peugeot Partner Tepee. Controla tu móvil desde la pantalla de tu coche.

UN CLASICO: SEMAFORO CON ARDUINO Y EJEMPLO DE LIBRERIA.