eBlock es una aplicación Open Source basada en Scratch que permite programar por bloques un gran número de dispositivos (no sólo Arduino).
Está desarrollado a partir del código fuente de mBlock al que se le han aplicado varias mejoras importantes.
https://github.com/distintiva/eBlock
El fabricante de robótica chino Makeblock Co. Ltd ha descontinuado el soporte de la versión 3 de mBlock y la siguiente versión de su software ya no es Open Source
A su vez hay una gran cantidad de usuarios que todavía preferían seguir usando mBlock v3 y se sienten más cómodos con el programa dado que prefieren seguir viendo su código convertido a C++ (el que usa Arduino) en lugar de pasarse a Python
Por ello hemos decidido seguir con el soporte de este gran software, aplicando mejoras propuestas por los usuario y sobre todo que continúe siendo Open Source.
eBlock ya no es dependiente de ninguna marca de robots, ya que permite programar cualquier tipo de dispositivo aunque no esté basado en Arduino como por ejemplo ( BBC micro:bit, SAMD51, ESP8266, ESP32, STM32 ...) y otros nuevos que cualquier usuario puede configurar.
eBlock no necesita instalación y ocupa 27Mb , sólo tienes que descargarlo desde el siguiente enlace y descomprimirlo en tu PC
Con colores más actuales, reubicación de componentes y accesos directos a funciones comunes como el acceso a la visualización del código.
Hacen el código más legible y estéticamente más bonito.
Se ha rediseñado la venta del código fuente con un tema oscuro y resaltado de sintaxis más moderno, que a también te permite editar el código C++ antes de subirlo a la placa
Se ha cambiado la posición de la ventana de consola para que se pueda ver más código fuente
El nuevo visor de código fuente también es un editor ya que permite hacer pequeños cambios en el código generado en C++ antes de subirlo a la placa.
Creemos que es una buena forma de que nuestros futuros programadores quiten el miedo a programar en código, y de esta forma podrán hacer modificaciones al mismo y ver qué pasa.
Permite usar matrices de led de otros tamaños ( el siguiente ejemplo muestra el editor de 5x5 para usarlo con la placa micro:bit)
Y también se ha ampliado la previsualización del bloque de matriz y se han separado sus píxeles mejorando su comprensión.
Ya no verás todos los bloques de tu robot dentro de la categoría “Robots” que dificultaba mucho la localización del los mismos. Ahora cada bloque reside en su categoría correspondiente ( por ejemplo los relativos a los motores en categoría de movimiento)
Ésto ayuda al usuario encontrar los bloques de cada extensión dentro de las categorías principales de Scratch
Todos los archivos de la aplicación residen en el mismo directorio por lo que puedes almacenarla en un pendrive y transportarla con tu configuración preferida
eBlock ocupa menos de 30 Mb comprimido ( frente a los 125 Mb de su antecesor )
Se ha optimizado mucho código fuente para que su carga inicial se más rápida, más estable y se han eliminado muchos bugs.
Permite exportar los bloques de tu programa de scratch a imagen PNG, por si quieres compartir tu programa o por si quieres adjuntarlo a alguna documentación o página web.
Permite usar variables de tipo texto y éstas son traducidas a su código correspondiente en c++,
Permite usar listas de datos tanto numéricos como de tipo texto y también son traducidas a c++ para que puedas ampliar las posibilidades de tus robots
RTTTL es un formato de interpretación de melodías en modo texto que permite crear música más variada y de forma sencilla.
Seguro que todo el mundo se acuerda de las melodías que se podían descargar en los antiguos teléfonos Nokia.
Si buscas en internet podrás encontrar casi cualquier melodía en formato RTTTL que son del siguiente estilo.
Imperial:d=4, o=5, b=100:e, e, e, 8c, 16p, 16g, e, 8c, 16p, 16g, e, p, b, b, b, 8c6, 16p, 16g, d#, 8c, 16p, 16g, e, 8p
Ahora podrás usar este tipo de melodías usando un único bloque copiando y pegando cualquier melodía RTTTL que encuentres en internet.
Pudiendo ejecutar cualquier otro código mientras suena la melodía de fondo
Con tan sólo añadir un bloque más, nuestro código se ejecutará una vez haya sonado la música por completo
Permite usar bloques como “cuando el botón del mBot es pulsado” y que se traduzca a su código correspondiente en C++
También conseguimos que nuestro código sea más fácil de desarrollar, y ya NO es imprescindible usar el bloque “Arduino program” para que nuestro código sea traducido a c++, como ejemplo tenemos el siguiente código para la placa Echidna Shield
eBlock trata de ser lo más abierto y customizable posible pudiendo modificar ( añadir/ o eliminar) casi cada aspecto de la aplicación para que puedas configurarlo a tu gusto.
A demás de poder añadir extensiones, también podrás añadir o modificar la lista de dispositivos que quieres que se muestre.
Con eBlock puedes programar casi cualquier dispositivo existente, no sólo Arduino también podrás programar placas BBC micro:bit, ESP8266, ESP32, STM32, SAMD51, etc ...
Y por cada dispositivo podrás personalizar:
Los dispositivos se encuentran dentro del directorio eBlock/resources/devices
Si sólo quisiéramos que eBlock nos mostrara los diferentes tipos de placas Arduino bastaría con eliminar el resto de dispositivos y eBlock cargaría sólo los existentes.
Como se ve en la sección anterior, cada dispositivo consta de una carpeta donde reside su configuración básica, el archivo mínimo que se necesita para crear un nuevo dispositivo es device.json
Dentro del directorio eBlock/resources/devices creamos una carpeta con el nombre del nuevo dispositivo/robot que queramos añadir
Este archivo tiene la siguiente estructura y lo emplazaremos dentro de la carpeta que hemos creado para este dispositivo:
{ "label": "Makeblock - mBot Basic [mCore]",
"version" : "1.0" ,
"fqbn": "arduino:avr:uno",
"hex":["mbot_reset_default_program.hex", "mbot_firmware.hex" ],
"driver": {"windows":"driver_ch340_arduino.exe", "mac":"", "linux":""},
"digital_pins":[0,1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
"analog_pins": ["A0","A1", "A2", "A3", "A4", "A5"]
}
Cada dispositivo puede tener sus propios bloques, funciona como el sistema de extensiones de mBlock pero son bloques únicos de este dispositivo.
Para ello podemos crear los archivos (opcionales) :
blocks.json: Donde se define cada uno de los bloques y su correspondiente traducción a código C++
blocks.js: Donde están las funciones en javascript para tratar la comunicación con el firmware del dispositivo ( en caso de que lo tuviera)
Todos los bloques son traducidos a código C++ creando un archivo compilable por el compilador de Arduino-cli, pero si queremos que el código fuente de nuestro dispositivo se genere con otros includes, o queremos insertar alguna función específica entonces tendremos que crear un archivo llamado template.c dentro del directorio de configuración.
Un ejemplo de template.c del dispositivo Echidna Shield
#include "eblock.h" //include //define //serialParser void setup(){ Serial.begin(9600); //setup } void loop(){ //serialParserCall //loop _loop(); } void _loop(){ //_loop } //function void echidna_led(uint8_t pin, uint8_t state ){ if(pin==0){ //ALL pins e_pin_set(11,state); e_pin_set(12,state); e_pin_set(13,state); }else{ e_pin_set(pin,state); }; } void register_callback( uint8_t event, void (*in_main_func)() ){ } void _delay(float seconds){ long endTime = millis() + seconds * 1000; while(millis() < endTime)_loop(); }
as
eBlock permite mostrar una ventana de ayuda de cada dispositivo, para ello basta con crear un archivo README.md dentro del directorio de configuración ( en formato markdown ) y eBlock mostrará un icono al lado del dispositivo para poder abrir una ventana con el texto de ayuda que especifiquemos en este archivo