# 2 ARDUINOBLOCKS # Introducción

Esto no pretende ser un tutorial exhaustivo de ARDUINOBLOCKS, sino una guía rápida. ARDUINOBLOCKS es un programa que tiene muchas posibilidades. Si quieres saber más sobre ARDUINOBLOCKS tutoriales, ejemplos, foro.... te recomendamos [http://arduinoblocks.didactronica.com/](http://arduinoblocks.didactronica.com/) o el libro [Arduino blocks - libros y tutoriales](http://www.arduinoblocks.com/web/site/doc)

#### **¿Por qué una programación con bloques?** Arduino se programa en lenguaje C++ (con algunas variaciones para simplificarlo). Para programar normalmente se utiliza el IDE (“Integrated Development Environment"/"Entorno de Desarrollo Integrado") de Arduino, que permite escribir el código, compilar el programa (crear el programa binario para el procesador Arduino) y grabarlo en la placa Arduino a través del puerto USB. El IDE de Arduino se puede descargar [desde la web oficial](https://www.arduino.cc/en/Main/Software). Es totalmente libre *(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)* [![2022-04-13 12_45_21-PROYECTO 00 CONOCEMOS ARDUINO. - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2022-04/scaled-1680-/2022-04-13-12-45-21-proyecto-00-conocemos-arduino-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2022-04/2022-04-13-12-45-21-proyecto-00-conocemos-arduino-pdf-xchange-viewer.png) *(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)* Sin embargo pensando en edades más tempranas se han desarrollado formas más sencillas e intuitivas de programar Arduino como son los **lenguajes de programación por bloques**. De todos estos lenguajes cabe destacar **ARDUINOBLOCKS**. Gracias a este lenguaje visual podemos programar las placas Arduino sin necesidad de escribir ni una sola línea de código, de esta forma podemos empezar a realizar proyectos con Arduino de una forma muy rápida y a edades más tempranas. La única desventaja es que el lenguaje por código tiene todo el potencial que requiere la programación de un experto. Mismo programa creado con el IDE de Arduino en C++ (imagen de la izquierda) y con Arduinoblocks (imagen de la derecha). *(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)* *[![2022-04-13 12_47_24-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png](https://libros.catedu.es/uploads/images/gallery/2022-04/scaled-1680-/2022-04-13-12-47-24-proyecto-00-conocemos-arduino-pdf-google-drive.png)](https://libros.catedu.es/uploads/images/gallery/2022-04/2022-04-13-12-47-24-proyecto-00-conocemos-arduino-pdf-google-drive.png)* *(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)* Para trabajar con Arduinoblocks debemos ir a su página web [http://www.arduinoblocks.com/](http://www.arduinoblocks.com/) desde cualquier navegador y para cualquier sistema operativo (Windows, Linux, Mac). *(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)* #### **ArduinoBlocks** ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-yvragro3.png) Arduinoblocks es un programa creado por el profesor Juanjo López. Gracias a su entorno gráfico facilita la programación de placas Arduino a todos los niveles. Esta herramienta permite programar a personas sin conocimientos previos de programación, pero su versatilidad y potencia es tan grande que expertos programadores también pueden utilizarlo. *(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)* ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-blpzoc1a.jpeg) De [Juan José López Almendros](https://faberllull.cat/en/resident.cfm?id=38252&url=juan-jose-lopez-almendros.htm) CC-BY-SA La programación en **ArduinoBlocks** se realiza con bloques al estilo AppInventor o Scratch, *se puede utilizar a partir de 8 años*. No tenemos que escribir líneas de código y no nos permitirá unir bloques incompatibles evitando así posibles errores de sintaxis. La plataforma ArduinoBlocks genera, compila y sube el programa a la placa Arduino por medio de la conexión USB. Una vez subido el programa, la placa el Arduino no necesitará de la conexión al PC para funcionar pudiendo alimentarla con baterías o una fuente de alimentación para que funcione de forma autónoma. ArduinoBlocks actualmente funciona con todos los navegadores de última generación: Mozilla Firefox, Google Chrome, Opera, Safari,... *(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)* Por otro lado, tal y como se describe en la [Wiki](https://wiki.vitalinux.educa.aragon.es/index.php/Rob%C3%B3tica_con_Vitalinux) de **Vitalinux**, ArduinoBlocks funciona perfectamente con todos los sistemas operativos, pudiendo ser fácilmente instalable en equipos individuales y a nivel de centro dentro del soporte de Vitalinux. #### **Ayuda en Arduinoblocks** Además hay chat de Telegram con una comunidad de profesores y técnicos de la empresa que apoya Arduinoblocks donde puedes encontrar proyectos, enlaces interesantes y lo más importante: Puedes preguntar tus dudas o problemas [https://t.me/innovadidactic\_comunidad](https://t.me/innovadidactic_comunidad) [![logogrupotelegramarduinoblocks.jpg](https://libros.catedu.es/uploads/images/gallery/2023-09/scaled-1680-/logogrupotelegramarduinoblocks.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-09/logogrupotelegramarduinoblocks.jpg) # Crear cuenta Registrándonos como usuarios de la plataforma ArduinoBlocks podemos aprovechar todas estas posibilidades: - Guardar tus proyectos en la nube de ArduinoBlocks. - Añadir información al proyecto: descripción, componentes utilizados, imágenes, etc. - Añadir archivos adjuntos relacionados con el proyecto: esquemas, fotos, archivos para impresión 3D, aplicaciones, etc. - Compartir proyectos con el resto del mundo. - Importar proyectos compartidos por otros usuarios. - Valorar y comentar proyectos. - Programar directamente Arduino desde el propio navegador (con la aplicación: **ArduinoBlocks-Connector**). - Utilizar la consola serie desde el propio navegador. *(José Andrés Echevarría @cantabRobots CC-BY-NC-SA)* Entramos en [http://www.arduinoblocks.com/](http://www.arduinoblocks.com/) e iniciamos sesión ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-eojhr6du.jpeg) Y rellenamos el formulario ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-xgifbjtp.jpeg) # Cuentas alumnado Tal y como dice el tutorial de Juanjo López : *Permite a un usuario registrado con email, crear y administrar nuevas cuentas de usuario dentro de una organización, centro educativo o institución.* ** Si lo quieres en papel, te recomendamos el tutorial de Juanjo López son 12 diapositivas muy bien explicados [https://github.com/arduinoblocks/documentacion/blob/master/usuarios\_gestionados.pdf](https://github.com/arduinoblocks/documentacion/blob/master/usuarios_gestionados.pdf) El contar con esta funcionalidad es especialmente interesante en el caso de alumnado menor de 14 años, de forma que no sea necesario ceder ningún tipo de datos de ellos, ni recabar consentimientos parentales para la utilización de la plataforma. En general por criterios de protección y privacidad de datos, siempre es preferible trabajar con aplicaciones que solo requieren registro por parte del profesorado. # ArduinoBlocks connector

**Espera !!!** Aún no conectes tu placa (Arduino, NodeMCU, KeyStudio TDR STEAM...)

##### **PRIMER PASO Descargar e instalar ArduinoBlocks Connector** Para poder usar la herramienta **Arduinoblocks** tenemos que ejecutar antes **Arduinoblocks conector**. Lo descargamos de la misma página de ArduinoBlocks según el sistema operativo que usemos: Windows (**W7 E INFERIORES NO FUNCIONA**), Linux .... ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-tjddpzwe.jpeg) Lo descargamos y lo **instalamos.** En el caso de tener equipos Vitalinux, es fácilmente accesible e instalable desde la aplicación **Vitalinux Play** o si se desea una instalación masiva en el centro a través de su página de [soporte](https://soporte.vitalinux.educa.aragon.es/): [![image-1667329017653.png](https://libros.catedu.es/uploads/images/gallery/2022-11/scaled-1680-/image-1667329017653.png)](https://libros.catedu.es/uploads/images/gallery/2022-11/image-1667329017653.png) ##### **SEGUNDO PASO: COMPROBAR QUE DETECTA LA PLACA** Ahora **conectamos la placa** (Arduino, NodeMCU, KeyStudio TDR STEAM...) a nuestro ordenador, y observamos si lo detecta, en Windows entramos en Administrador de dispositivos: [![administradordispositivos.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/administradordispositivos.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/administradordispositivos.png) Y vemos que en los puertos COM se ha detectado correctamente la placa: [![puertos.png](https://libros.catedu.es/uploads/images/gallery/2022-08/scaled-1680-/puertos.png)](https://libros.catedu.es/uploads/images/gallery/2022-08/puertos.png)

En el caso de que no aparezca, es que no se han instalado correctamente los *drivers* de Arduino. Entonces vamos a la página oficial de Arduino y descargamos el programa **ARDUINO IDE** : [https://www.arduino.cc/en/software](https://www.arduino.cc/en/software) y lo instalamos. Al instalar este programa se instalan los drivers en nuestro ordenador. No hace falta ejecutarlo.

En el caso de equipos con sistema operativo Linux (como Vitalinux) el puerto serie tiene la forma **/dev/XXXX** ##### **TERCER PASO: ARDUINOBLOCKS CONNECTOR** Ahora buscamos el programa ArduinoBlocks connector que hemos descargado e instalado en el primer paso y lo **ejecutamos**. ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-aiwjnd15.jpeg) ### **ATENCIÓN** No podemos cerrar la ventana mientras utilizamos *Arduinoblocks*, la minimizamos simplemente. En caso contrario, Arduinoblocks no se puede comunicar con nuestra placa Arduino, NodeMCU, KeyStudio, etc .... ##### **CUARTO PASO: ARDUINOBLOCKS** Entramos en la web ARDUINOBLOCKS http://www.arduinoblocks.com/ nos logueamos e iniciciamos un proyecto, Vemos que en el editor que aparece ya los puertos COM (si no te aparece, dale a la rueda actualizar)

Aparecen varios COM, **elegir el último que tiene que coincidir con el que has visto en el segundo paso**, no necesariamente es el COM más alto. Si se queda una ruleta de espera demasiado tiempo, entonces, actualizar la página o darle a actualizar el botón 1 de la figura :

[![arduinoblocks-com.jpg](https://libros.catedu.es/uploads/images/gallery/2022-04/scaled-1680-/arduinoblocks-com.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-04/arduinoblocks-com.jpg) Una vez elegido el COM ya puedes darle al botón amarillo **SUBIR** cuando has realizado tu proyecto pero antes de subir, por si acaso dale a **guardar** el proyecto que has realizado. En el caso de equipos con Linux veremos algo así: [![image-1667328938836.png](https://libros.catedu.es/uploads/images/gallery/2022-11/scaled-1680-/image-1667328938836.png)](https://libros.catedu.es/uploads/images/gallery/2022-11/image-1667328938836.png)

**¿Tengo que hacer los cuatro pasos cada vez?** No, sólo la primera vez para asegurar los drivers del Arduino, las siguientes veces que te conectes lo único que tienes que hacer es el tercer y cuarto paso

**IMPORTANTE: TENER EL SOFTWARE ARDUINOBLOCKS ACTUALIZADO** para que funcionen los nuevos bloques que se incorporan en Arudinoblocks

# Empezando Entramos en Proyectos y podemos ver nuestros proyectos creados como también empezar uno. ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-hgcjxksy.jpeg) Y nos aparece tres opciones : ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-xxf0bf0a.jpeg) En esta ventana podremos elegir que tipo de proyecto vamos a realizar: - **Proyecto Personal**: Iniciar un nuevo proyecto que sólo será accesible para el usuario. Posteriormente se puede compartir al resto de la comunidad si se desea. - **Proyecto Profesor**: Iniciar un proyecto como profesor. De esta forma no se inicia un proyecto como tal, sino que se especifican los datos del proyecto y se genera un código para que los alumnos se puedan suscribir al proyecto. El profesor podrá supervisar y valorar los proyectos de sus alumnos. - **Alumno**: De esta forma nos unimos a un proyecto planteado por el profesor. Nosotros realizaremos el proyecto como si de un proyecto personal se tratara, pero el profesor podrá supervisar y valorar nuestro trabajo.

*Adaptado de [este enlace.](https://drive.google.com/file/d/1fRIZWhedmk2-lMZ7EeTXg5NjnBKDyCnN/view) José Andrés Echevarría @cantabRobots CC-BY-NC-SA*

Lo primero que tenemos que elegir es para qué tipo de placa se hace el proyecto. - En el caso de que estés con el kit de CATEDU **Rover marciano con Arduinoblocks** el tipo de proyecto es para **ESP8266 / NodeMCU** - En el caso de que estés con el kit de CATEDU **Arduino con Arduinoblocks** el tipo de proyecto es para **Arduino UNO** - En el caso de que estés con el kit de CATEDU **ArduinoBlocks en el aula** tienes dos opciones totalmente válidas: - **ArduinoUno** - **ArduinoUno + Imagina TdR STEAM** - En el caso de que estés con el kit de CATEDU **ESP32 en el aula** tienes dos opciones totalmente válidas: - **ESP32 STEAMakers** - **ESP32 STEMakers + Imagina TdR STEAM** [![placa-a-elegir-arduinoblocks.png](https://libros.catedu.es/uploads/images/gallery/2022-12/scaled-1680-/placa-a-elegir-arduinoblocks.png)](https://libros.catedu.es/uploads/images/gallery/2022-12/placa-a-elegir-arduinoblocks.png)

**ATENCIÓN** luego **NO** se puede cambiar. Es decir, un proyecto realizado para un tipo de placa, no se puede cambiar a otro tipo de placa (la razón es simpe: las instrucciones cambian)

Luego el nombre y el resto de campos es optativo pero **importante y buena costumbre** rellenarlos, sobre todo si el proyecto lo **compartimos**: - Descripción - Componentes - Comentarios #### **Área de programación del proyecto** Este es el área sobre el que se trabaja en Arduinoblocks. En esta área arrastraremos y colocaremos los bloques que vamos a utilizar para crear nuestro programa. En el área de trabajo hay un Zoom (2) para ampliar o reducir la imagen, un icono para centrar (1) y un icono donde podremos borrar los bloques que no utilicemos (3). [![2022-04-13 19_02_05-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png](https://libros.catedu.es/uploads/images/gallery/2022-04/scaled-1680-/2022-04-13-19-02-05-proyecto-00-conocemos-arduino-pdf-google-drive.png)](https://libros.catedu.es/uploads/images/gallery/2022-04/2022-04-13-19-02-05-proyecto-00-conocemos-arduino-pdf-google-drive.png)

*Adaptado de [este enlace.](https://drive.google.com/file/d/1fRIZWhedmk2-lMZ7EeTXg5NjnBKDyCnN/view) José Andrés Echevarría @cantabRobots CC-BY-NC-SA*

Las principales secciones del área de programación son las siguientes : [![2022-04-13 19_03_07-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png](https://libros.catedu.es/uploads/images/gallery/2022-04/scaled-1680-/2022-04-13-19-03-07-proyecto-00-conocemos-arduino-pdf-google-drive.png)](https://libros.catedu.es/uploads/images/gallery/2022-04/2022-04-13-19-03-07-proyecto-00-conocemos-arduino-pdf-google-drive.png)

*Adaptado de [este enlace.](https://drive.google.com/file/d/1fRIZWhedmk2-lMZ7EeTXg5NjnBKDyCnN/view) José Andrés Echevarría @cantabRobots CC-BY-NC-SA*

#### ***Ver el código*** **ArduinoBlocks** genera el código de Arduino a partir de los bloques. El programa se puede compilar y subir directamente a la placa Arduino gracias a la aplicación **ArduinoBlocks-Connector**, sin embargo si deseamos ver o descargar el código podemos realizarlo desde el área de bloques. [![2022-04-13 19_05_37-PROYECTO 00 CONOCEMOS ARDUINO..pdf - Google Drive.png](https://libros.catedu.es/uploads/images/gallery/2022-04/scaled-1680-/2022-04-13-19-05-37-proyecto-00-conocemos-arduino-pdf-google-drive.png)](https://libros.catedu.es/uploads/images/gallery/2022-04/2022-04-13-19-05-37-proyecto-00-conocemos-arduino-pdf-google-drive.png)

*Adaptado de [este enlace.](https://drive.google.com/file/d/1fRIZWhedmk2-lMZ7EeTXg5NjnBKDyCnN/view) José Andrés Echevarría @cantabRobots CC-BY-NC-SA*

Siempre, desde un **lenguaje de programación en bloques** podemos obtener su equivalente a **Código de Arduino IDE (**de hecho es lo que hacen los programas), y luego con las funciones de **Código de Arduino IDE** el software lo pasa a **lenguaje máquina** que es la que se graba el Arduino, **pero no al revés** es decir, no existen programas que dado un código máquina o código Arduino IDE lo pasen a bloques gráficos, (igual que no hay programas que lean el código máquina que hay grabado en un Arduino y lo pasen a código Arduino IDE). Esto no es del todo 100% verdadero pues la Ingeniería inversa en informática trata pues de eso: obtener la fuente aunque sea parcial, pues si obtienes el código legible, puedes alterar lo que quieras. Cuando compras un programa comercial, te dan el lenguaje máquina ilegible. Mientras que los programas de software libre se publica el código fuente legible para que todo el mundo pueda mejorarlo.

Por ejemplo en la siguiente figura, el programa gráfico **mBlock** que se utiliza en Arduino, mBot, etc... pasa sus instrucciones de lenguaje de programación de bloques parecido a Scratch a lenguaje de **Código de Arduino IDE** y Arduino IDE graba instrucciones binarias de **lenguaje máquina** al Arduino. [![embedded-image-j3gKXHlj.png](https://libros.catedu.es/uploads/images/gallery/2022-02/scaled-1680-/embedded-image-j3gkxhlj.png)](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-j3gkxhlj.png) **¡¡A disfrutar!!** Consejo: Te recomendamos visitar el canal de Youtube de Arduinoblocks [https://www.youtube.com/c/ArduinoBlocks](https://www.youtube.com/c/ArduinoBlocks) # Intermitente Nuestro primer programa que vamos a hacer es un intermitente en D4 > **tip** ¿Por qué con D4 y no con otro? Porque D4 tiene un led integrado en la placa, también D0. ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-sg4ehpxm.jpeg) > **danger** > > ## ATENCIÓN > > Estos leds van al reves, (configuración [pop-down](https://catedu.github.io/programa-arduino-mediante-codigo/resistencias_pullup_y_pulldown.html)) luego **para encender el led, D4 tiene que estar a nivel bajo**, y al revés para apagarlo, D4 en nivel alto. El programa es muy sencillo y lo completamos que se pueda visualizar por la salida puerto serie, por eso al iniciar ponemos el puerto serie a 9600 baudios. ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-lmzxgpb5.png) Le damos a **subir** (teniendo el programa Arduinoblocks conector minimizado, eso lo podemos ver enseguida pues detecta en que COM está conectado, en la figura sale COM5) y en **Cónsola** podemos ver el contenido del puerto serie. ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-rsvdu7zi.jpeg) # ¿Qué es Arduino? {{@2936}} # Software del Arduino {{@7552}} # Sensores {{@7009}} # Sensores del rover Arduino La ventaja de ARDUINOBLOCKS es que tiene ya incorporado una cantidad de bloques con sus librerías y funciones integradas por lo que el alumno no tiene que pelear con códigos y situaciones especiales, simplemente arrastrar el bloque y funcionar: ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-r4zol3q5.jpeg) ## Probando el sensor LDR. Vamos a probar este sensor que está conectado en una entrada analógica, para ello simplemente que escriba su valor en el puerto, y veremos cómo va cambiando. Es recomendable para la lectura de los sensores, crear variables que almacenen los valores leídos, para luego utilizar estos valores: ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-wzf2bkxq.jpeg) El siguiente código lee el sensor cada 2 seg. y lo vemos por el puerto serie. Podemos comprobar que **cuanto más luz, la lectura es menor.** ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-felo6ocz.png) Guardamos el proyecto, lo subimos al Arduino y pulsamos en consola para ver cómo cambia los valores. ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-fhzpues2.jpeg) ## Probando el sensor DHT22. Vamos a probar este sensor, que mide a la vez temperatura y humedad. Con el bloque correspondiente, [nos ahorramos bastante código](https://catedu.github.io/programa-arduino-mediante-codigo/control_de_temperatura_y_humedad.html). ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-0mw5aqjq.png) ## Probando el sensor Hall. Este sensor tiene también su bloque : ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-yuvkocf0.jpeg) Podemos construir un programa análogo al anterior y veremos que su salida es simplemente 0 o 1 depende si acercamos o no un imán. # Actuadores y otras salidas {{@7010}} # Motores en el rover Arduino Los motores **derechos** se gobiernan con la siguiente instrucción : ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-2gk5sc0k.jpeg) - Activando el pin D1 encendemos los motores - El pin D3 en ON van hacia delante, si queremos que vayan hacia atrás, ponemos D3 en OFF - El valor PWM del pin D1 es la potencia que transferimos al motor, puede ser desde 0 hasta 1023 Recomendamos leer [esta página](https://catedu.github.io/programa-arduino-mediante-codigo/un_caso_especial_seales_pwm.html) sobre el significado de las salidas PWM. Para los motores **izquierdos** se gobiernan con la siguiente instrucción : ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-jao8xzr1.jpeg) - Activando el pin D2 encendemos los motores - El pin D4 en ON van hacia delante, si queremos que vayan hacia atrás, ponemos D4 en OFF - El valor PWM del pin D2 es la potencia que transferimos al motor, puede ser desde 0 hasta 1023. Recomendamos ejecutar estas instrucciones y jugar con estos valores para ver si están bien conectados los motores : ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-izftw1k8.jpeg)