En la sección anterior, ya hicimos que CoCube y MQTTX se enviaran mensajes entre sí. Esta vez, en lugar de simplemente mostrar el mensaje en pantalla, hacemos que CoCube realice acciones basadas en el mensaje que recibe.
Este tutorial contiene dos experimentos:
- Envíe
forward,backward,left,rightpara controlar el movimiento de CoCube. - Envíe el nombre de la función y los parámetros para llamar a los bloques existentes en CoCube.
Si todavía no ha completado el experimento de conexión MQTT, lea primero Introducción a CoCube MQTT. Para conocer en detalle cómo funcionan las llamadas a funciones, consulte Llamadas avanzadas a programas.
1. Conecte MQTT
En este caso se sigue utilizando el programa de conexión del apartado anterior. Complete el nombre y la contraseña de Wi-Fi y presione los botones A y B de CoCube al mismo tiempo.

Cuando CoCube muestra una cara sonriente, significa que está conectado al servidor MQTT.
El programa también utiliza estas bibliotecas de bloques:
MQTTCoCubeLlamadas a Funciones
La biblioteca de bloques Llamadas a Funciones se encuentra en Añadir biblioteca → Otros → Llamadas a Funciones.
2. Controla CoCube con mensajes simples
Empecemos por el método más sencillo: hacer que cada mensaje corresponda a una acción.

Después de presionar la tecla A, CoCube se suscribirá a:
cocube/control
Al recibir un mensaje, el programa lee el contenido del evento MQTT y luego usa si / si no, si para determinar la acción que debe realizar:
| Mensajes recibidos | Acciones de CoCube |
|---|---|
forward |
Avanzar |
backward |
Retroceder |
left |
Girar a la izquierda |
right |
Girar a la derecha |
En MQTTX, establezca el tema en cocube/control, envíe estos cuatro mensajes en secuencia y observe las acciones de CoCube.
Este método de escritura es simple e intuitivo, pero cada comando nuevo requiere otra condición. Si desea llamar a más bloques de forma remota, el programa será cada vez más largo.
3. Describir una llamada a función en un mensaje
Podemos poner las funciones y parámetros a ejecutar en el mensaje MQTT en el formato:
call,nombre_de_función,parámetro1,parámetro2...
Por ejemplo, el siguiente mensaje significa: Mueva el CoCube hacia adelante a una velocidad de 40 durante 1000 milisegundos.
call,CoCube move for msecs,cocube;forward,40,1000
Separe cada parte del mensaje con comas:
| Contenido | Significado |
|---|---|
call |
Indica que este es un mensaje de llamada a función |
CoCube move for msecs |
Nombre de la función |
cocube;forward |
Parámetros de dirección |
40 |
Parámetro de velocidad |
1000 |
Parámetro de tiempo en milisegundos |
4. Analizar y llamar a una función
Sustituye el programa de comandos fijos en la sección anterior con el siguiente programa general:

Una vez que el programa reciba el mensaje MQTT, se procesará en el siguiente orden:
- Lea la carga útil del mensaje y guárdela en
msg. - Compruebe si los primeros cuatro caracteres del mensaje son
call. - Separe el mensaje con comas.
- Tome el segundo elemento como nombre de función
cmd_name. - Usa el tercer elemento y los siguientes como lista de parámetros
cmd_args. - Usa el bloque llama para ejecutar la función.
De esta forma, no es necesario crear condiciones separadas para cada acción. Siempre que el mensaje contenga el nombre de la función y los parámetros correctos, el mismo programa puede realizar diferentes tareas.
Code_2.pngyCode_3.pngson dos etapas diferentes de procedimientos de recepción. Después de completar la Sección 2, reemplácelo con el programa de la Sección 4. No ejecute ambas versiones al mismo tiempo.
5. Prueba en MQTTX
Mantenga el tema en MQTTX como:
cocube/control
Desactiva Retain, luego envíe:
call,CoCube move for msecs,cocube;forward,40,1000
call,CoCube move for msecs,cocube;backward,40,1000
call,CoCube rotate for msecs,cocube;left,30,1000
call,CoCube rotate for msecs,cocube;right,30,1000

Estos cuatro mensajes harán que CoCube se mueva hacia adelante, hacia atrás, gire hacia la izquierda y hacia la derecha, respectivamente.
6. Cómo encontrar el nombre de función de un bloque
El nombre de la función en el mensaje debe ser exactamente el mismo que el nombre de la función real del bloque.
Haga clic con el botón derecho en el bloque en MicroBlocks, seleccione Copiar al portapapeles y luego pegue el contenido en un comentario para ver el GP Script correspondiente.

Los bloques de la imagen obtendrán:
'CoCube move for msecs' 'cocube;forward' 40 1000
por lo tanto:
- El nombre de la función es
CoCube move for msecs. - Los parámetros son
cocube;forward,40y1000.
Al combinarlos con el formato call,nombre_de_función,lista_de_parámetros, se obtiene un comando completo que puede enviarse mediante MQTT.
7. Probar más funciones
Seleccione un bloque CoCube que desee ejecutar de forma remota, vea el nombre de su función y sus parámetros, y redacte un nuevo mensaje call en MQTTX.
También puedes asignar temas diferentes a cada robot, por ejemplo:
cocube/eow/control
cocube/eop/control
De esta manera, se pueden controlar varios CoCubes por separado desde la misma interfaz MQTTX.
Este tutorial utiliza un broker MQTT público. Elige temas que no entren en conflicto con otros usuarios, no envíes información personal y no dejes robots conectados a temas públicos funcionando sin supervisión.