Skip to main content

Bluetooth IV El programa en mBlock

TeComo recomendamosya estashemos páginas:

visto

sotros vamos a utilizar la APP BlueControl:

Problema número 1: ocupamosbloquea el puertocable serie

USB

Si

PASO has1 leído Cómo se comunica con un Arduino habrás visto que ocupamos LOS MISMOS PINES D0 Y D1 QUE UTILIZAINSTALAMOS EL DISPOSITIVO ARDUINO PARA COMUNICARSE POR EL PUERTO SERIE CON EL ORDENADOR.

Esto crea un problema: No se puede tener conectado el HC-06 mientras nos comunicamos el ordenador con el Arduino.

Solución: Pues quítalo,IDE y luego cuando acabes de descargar el programa en el Arduino, pues lo pones.

Bah!! ¿sólo era eso? pues no, que nos ocupe el puerto serie nos fastidia: ¿puedes interaccionar con el Sprite? por ejemplo ¿puedes hacer que el oso panda de mBlock se mueva según el mando de BlueControl?...NO

Problema 2 la velocidad del puerto es elevada

Al programar con mBlock fija la velocidad del puerto serie a 115200 baudios, y nuestro HC-06 soporta 9600

Solución: Bajarlo manualmente, un rollo, tenemos que salir de mBlock, editarlo en Arduino IDE .... esto se ve mejor en el ejemplo siguiente.

Reto: Encendido y apagado de LEDs con el móvil

Vamos a ejecutarDispositivos - Añadir - Arduino UNO (no vale el Echidna ni el Arduino nano)

2025-12-05 10_03_34-mBlock v5.4.3.png

PASO 2 INSTALAMOS LA EXTENSIÓN BLUETOOTH SERIAL

Hay muchas extensiones que trabajan el Bluetooth con Arduino (hay mucha basura) hemos elegido este pequeñopues programa,es una extensión sencilla, en castellano y que alenvía apretarcomo recibe por el botónBluetooth

2025-12-05 10_15_18-Greenshot image editor.png

PASO 3 PROGRAMA

Con la extensión instalada y el dispositivo ya podemos empezar a programar

ENUNCIADO Vamos a realizar un programa que envíe y reciba datos desde la APP del móvil al Echidna

  • Si envío una R se enciende el Rojo
  • Si envío una A se enciende el Amarillo
  • Si envío una L que me diga el nivel de arribaLuz que hay, 10 lecturas para ver cómo cambia

SOLUCIÓN

2025-12-05 10_17_34-mBlock v5.4.3.png
El programa lo puedes descargar aquí https://planet.mblock.cc/project/6844489

  1. Utilizamos los pines del Arduino (busca instrucciones azules Pin) el led rojo está en D13 y en naranja en el 12 de momento empezamos poniéndolos apagados
  2. PONEMOS LA VELOCIDAD DE BLUETOOTH A 9600 HAY QUE BAJARLO SINO NO FUNCIONA
    1. Y ponemos Rx que es D0 y Tx es D1 como hemos visto anteriormente
  3. El programa empieza con el clásico bucle y pregunta si se enciendenhan recibido datos
  4. Si se han recibido datos pues entonces lo almacena en una variable interna llamada "Letra"
  5. Si Letra = R entonces se enciende el led Rojo
  6. Si Letra = A entonces se enciende el led Amarillo
  7. Si Letra = L entonces es que preguntamos qué nivel hay de Luz
  8. Entramos en un bucle de 10 veces tal y como dice el enunciado
  9. Escribe en la APP el valor de la luz medida en el sensor LDR que está en el A5
    1. OJO HAY QUE MAPEARLO (ya hemos visto qué significa esto) y la instrucción de mapear está en violeta en Datos

CUÁNTO HAY QUE MAPEARLO pues el LDR según www.echidna.es va desde 1 a 900 y Bluetooth solo lee un carácter en ASCII luego convertimos el valor de A5 (1-900) a un valor ASCII que si vemos la página, lo hacemos para los ledsvalores de los caracteres 0 a 9 y alasí apretarnos elda una lectura de abajola secantidad apagan:de luz entre 0 y 9

VALOR ASCIICARACTER
480
491
502
513
524
535
546
557
568
579

Resultado

SoluciónOtras APPs

image-1648741316977.png

PrimeroHay hayotras apps como el Arduino Bluetooth Control  que vincularpermite elponer móvilflechas, concontrol lade voz... pero no permite envío de Echidna a APP



Segundo hay que subir el programa solucionando los problemas anteriores

Mejor verlo con esta presentación:



O sea, ya podemos jugar con el móvil y con nuestro Echidna !!!

Por ejemplo..Incluso se podría hacer un coche teledirigido, el programa lo tienes en el repositorio: https://github.com/JavierQuintana/Echidna y el vídeo en el muro

// generated by mBlock5 for <your product>
// codes make you happy

#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>

void _delay(float seconds) {
  long endTime = millis() + seconds * 1000;
  while(millis() < endTime) _loop();
}

void setup() {
  pinMode(13,OUTPUT);
  Serial.begin(9600);
  digitalWrite(13,0);
  while(1) {
      if(Serial.available() > 0){
        if(Serial.read() == 'a'){
          digitalWrite(13,1);
        }else{
          digitalWrite(13,0);
        }

      }

      _loop();
  }

}

void _loop() {
}

void loop() {
  _loop();
}