# Programa Arduino Con Mblock (Scratch)

Arduino es una plataforma de electrónica abierta para la creación de prototipos basada en software y hardware flexibles y fáciles de usar. En este capítulo ofrecemos una guía de referencia rápida que…

# Introducción

Para aprender a programar esta famosa tarjeta microcontroladora, no hace falta saber C++ y lenguajes sofisticados, en este curso proponemos utilizar el lenguaje didáctico de **mBlock** que es igual al **Scratch** con unas instrucciones específicas para robótica *(bueno, también cambia el gato por un oso panda si nos ponemos meticulosos)*.

### Objetivos

- Conocer las posibilidades didácticas de la placa Arduino
- Pensamiento computacional con el atractivo de la electrónica
- Imaginación y creatividad con la electrónica asociada a Arduino
- Este curso tratamos los conceptos fundamentales para trabajar con el Arduino, empezando desde un nivel muy básico de electrónica con el objetivo de ROMPER EL HIELO en la utilización de esta placa.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-06ycnfbe.jpeg)

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-stqfrrza.jpeg)

# El pensamiento computacional

Hay muchas herramientas para trabajar en los niños el lenguaje de las máquinas, pero ¿Cuál elegir? ¿Cuál es el apropiado a qué edad?¿**El ARDUINO donde se sitúa**? para aclarar un poco hemos elaborado esta hoja de ruta, es orientativa de las herramientas y robots elegidos por Catedu para los cursos, evidentemente hay otros robots y otras herramientas muy válidas, pero no podemos ponerlas todas y complicar el esquema, así que preferimos ser claros que abarcarlo todo:

Guía orientativa

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" src="https://docs.google.com/presentation/d/e/2PACX-1vQHiZvv1cGHet7eXVy-QcECY4Lj0k0l7ntDi8MevRWHQX-9myA0bfR5IofMeuGZkWD0Hw-Ob-MGoco_/embed?start=true&loop=true&delayms=3000" width="960"></iframe>

<p class="callout success">Tenemos un **grupo Telegram Robótica Educativa en Aragón**, [https://t.me/roboticaeducativaaragon](https://t.me/roboticaeducativaaragon)</p>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-7qvnrzdh.jpeg)

# Robótica y accesibilidad

#### **<span style="color: #169179;">1.- Introducción</span>**

Durante mucho tiempo la robótica fue patrimonio de personas y/o instituciones con alta capacidad económica (podían adquirir las placas con microcontroladores comerciales) y capacidad intelectual (podían entender y programar el funcionamiento de las mismas) siempre dentro de los límites establecidos por las marcas comerciales y lo que pudieran “desvelar” de su funcionamiento, vigilando siempre que la competencia no “robara” sus secretos y “copiara” sus soluciones.

Todo esto saltó por los aires en torno a 2005 con la irrupción de un grupo de profesores y estudiantes jóvenes, que decidieron romper con esta dinámica, tratando de poner a disposición de su alumnado microcontroladores económicamente accesibles y que les permitieran conocer su funcionamiento, sus componentes, e incluso replicarlos y mejorarlos. Nacía **Arduino** y el concepto de **Hardware Open Source**. Detrás de este concepto se encuentra la **accesibilidad universal.** En un proyecto Open Source todo el mundo puede venir, ayudar y contribuir, minimizando barreras económicas e intelectuales.

Arduino traslada al hardware un concepto ya muy conocido en el ámbito del software, como es el **software open source o software libre.**

**[![opensource.png](https://libros.catedu.es/uploads/images/gallery/2022-12/scaled-1680-/opensource.png)](https://libros.catedu.es/uploads/images/gallery/2022-12/opensource.png)**

<details id="bkmrk-software-libre-cuand"><summary>Software libre</summary>

Cuando los desarrolladores de software terminan su creación, tienen múltiples posibilidades de ponerlo a disposición de las personas, y lo hacen con condiciones específicas especificadas en una licencia. Esta licencia es un contrato entre el creador o propietario de un software y la persona que finalmente acabará utilizando este software. Como usuarios, es nuestro deber conocer las condiciones y permisos con las que el autor ha licenciado su producto, para conocer bajo qué condiciones podemos instalar y utilizar cada programa.

Existen muchas posibilidades de licencias: software privativo, comercial, freeware, shareware, etc.. Nos centraremos aquí en la de software libre.

GNU ([https://www.gnu.org](https://www.gnu.org/)) es una organización sin ánimo de lucro que puso una primera definición disponible de lo que es software libre: Software libre significa que los usuarios del software tienen libertad (la cuestión no es el precio). Desarrollaron el sistema operativo GNU para que los usuarios pudiesen tener libertad en sus tareas informáticas. Para GNU, el software libre implica que los usuarios tienen las cuatro libertades esenciales:

1\. ejecutar el programa.  
2\. estudiar y modificar el código fuente del programa.  
3\. redistribuir copias exactas.  
4\. distribuir versiones modificadas.

En otras palabras, el software libre es un tipo de software que se distribuye bajo una licencia que **permite a los usuarios utilizarlo, modificarlo y distribuirlo libremente**. Esto significa que los usuarios tienen libertad de ejecutar el software para cualquier propósito, de estudiar cómo funciona el software y de adaptarlo a sus necesidades, de distribuir copias del software a otros usuarios y de mejorar el software y liberar las mejoras al público.

El software libre se basa en el principio de la libertad de uso, y no en el principio de la propiedad. Esto significa que los usuarios tienen la libertad de utilizar el software de la manera que deseen, siempre y cuando no violen las condiciones de la licencia. El software libre es diferente del software propietario, que es el software que se distribuye con restricciones en su uso y modificación. El software propietario suele estar protegido por derechos de autor y solo se puede utilizar bajo los términos y condiciones especificados por el propietario del software.

Recomendamos la visualización de este [video ](https://youtu.be/nlDVZ816zoI)para entender mejor el concepto.

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/nlDVZ816zoI" width="560"></iframe>

</details>Más adelante, entorno a 2015, en Reino Unido, surgiría también la placa **BBC Micro:bit**, con la misma filosofía de popularizar y hacer accesible en este caso al alumnado de ese país la programación y la robótica. También hablaremos de ella.

#### **<span style="color: #169179;">2.- ARDUINO o LA ROBÓTICA ACCESIBLE</span>**

Arduino es una **plataforma de hardware y software libre**.

<details id="bkmrk-hardware-libre-esto-"><summary>Hardware libre</summary>

Esto significa que tanto la placa Arduino como el entorno de desarrollo integrado (IDE) son de código abierto. Arduino permite a los usuarios utilizar, modificar y distribuir tanto el software como el hardware de manera libre y gratuita, siempre y cuando se respeten las condiciones de las licencias correspondientes.

El hardware libre es un tipo de hardware cuya **documentación y diseño están disponibles de manera gratuita y libre** para su modificación y distribución. Esto permite a los usuarios entender cómo funciona el hardware y adaptarlo a sus necesidades, así como también crear sus propias versiones modificadas del hardware.

Arduino surge como solución al **elevado precio de los microcontroladores** allá por el año 2005. En el ámbito de la educación, los microcontroladores solo se utilizaban en la etapa universitaria, y su coste era tan elevado que muchos proyectos de fin de carrera se quedaban únicamente en prototipos virtuales ya que las universidades no podían proveer a cada estudiante con un microprocesador, contando además que en el propio proceso de experimentación lo más habitual era que una mala conexión hiciera que se rompieran. Otro **gran inconveniente era la dificultad de la programación**. Cada fabricante entregaba su manual de programación, lo que hacía que de unos a otros no hubiera un lenguaje estándar, y la consecuente dificultad de interpretación. Además, su programación era a bajo nivel en lenguaje máquina. Generar una simple PWM requería una ardua y minuciosa secuenciación que podía llevar varias horas hasta conseguir el resultado deseado. Por este motivo, el enfoque de Arduino desde el principio fue ser Open Source tanto en hardware como en software. El desarrollo del hardware fue la parte más sencilla. Orientado a educación, sufre algunas modificaciones frente a los<span style="font-size: 13.5pt; mso-bidi-font-size: 12.0pt; font-family: sans-serif;"> </span>microprocesadores existentes para hacer más fácil su manejo y accesibilidad a cualquier sensor o actuador. El mayor esfuerzo se entregó en todas las líneas de código que hacían posible que ya no hubiera que programar a bajo nivel gracias al IDE de Arduino que incluía bibliotecas y librerías que estandarizaban los procesos y hacían tremendamente sencillo su manejo. Ahora el alumnado para mover un motor, ya no tenía que modificar las tramas de bits del procesador una a una, sino que bastaba con decir que quería moverlo en tal dirección, a tal velocidad, o a equis grados.

</details>Acabábamos de pasar de unos costes muy elevados y una programación muy compleja a tener una **placa accesible, open source y de bajo coste** que además hacía muy **accesible su programación y entendimiento**, características fundamentales para su implantación en educación, hasta tal punto que su uso ya no era exclusivo de universidades, sino que se extiende a la educación secundaria.

[![arduinosecundaria.png](https://libros.catedu.es/uploads/images/gallery/2022-12/scaled-1680-/arduinosecundaria.png)](https://libros.catedu.es/uploads/images/gallery/2022-12/arduinosecundaria.png)

Este hecho es fundamental para el desarrollo del Pensamiento Computacional en el aula observándose que su accesibilidad y beneficios son tales, que alcanzan a **centros con alumnado de toda tipología** como la aplicación del pensamiento computacional y robótica en aulas con alumnos de necesidades especiales. Una vez más, aparece el concepto de accesibilidad asociado a esta filosofía Open Source.

A este respecto, recomendamos la lectura de [este interesante blog](https://dgafprofesorado.catedu.es/2019/09/25/robotiqueamos-experiencia-de-aproximacion-a-la-robotica-en-educacion-especial-cpee-angel-riviere/), que tiene por título: ROBOTIQUEAMOS...” Experiencia de aproximación a la robótica en Educación Especial (CPEE ÁNGEL RIVIÈRE). También recomendamos los trabajos robótica en Educación Especial (CPEE ÁNGEL RIVIÈRE): [http://zaragozacpeeangelriviere.blogspot.com/search/label/ROB%C3%93TICA](http://zaragozacpeeangelriviere.blogspot.com/search/label/ROB%C3%93TICA)

[![blogRobotiqueamos.jpg](https://libros.catedu.es/uploads/images/gallery/2022-12/scaled-1680-/blogrobotiqueamos.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-12/blogrobotiqueamos.jpg)

Igualmente, la aparición de Arduino supone una gran facilidad para la aplicación de la robótica y la programación en la atención temprana, donde son numerosas sus aplicaciones desde ayudar a mitigar el déficit de atención en jóvenes autistas, hasta ayudar a socializar a los alumnos con dificultades para ello, o ayudar a alumnos de altas capacidades a desarrollar sus ideas.

Por otro lado su accesibilidad económica lo ha llevado a popularizarse en países de **todo el mundo**, especialmente en aquellos cuyos sistemas educativos no disponen en muchas ocasiones de recursos suficientes, lo que supone en la práctica una **democratización del conocimiento y superación de brecha digital.**

<details id="bkmrk-filosof%C3%ADa-del-arduin"><summary>Filosofía del Arduino ver vídeo</summary>

Arduino y su IDE son la primera solución que aparece en educación con todas las ventajas que hemos enumerado, y esto hace que todos los nuevos prototipados y semejantes tengan algo en común, siempre son compatibles con Arduino

<span style="font-weight: 400;">Para entender bien la filosofía de Arduino y el hardware libre, os recomendamos este documental de 30 minutos.[ Arduino the Documentary](http://www.vimeo.com/18390711)</span>

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="360" src="https://player.vimeo.com/video/18390711?h=b5844e7753" width="640"></iframe>

</details><details id="bkmrk-scratch%3A-software-li"><summary>Scratch: software libre para el desarrollo del pensamiento computacional</summary>

Scratch es un lenguaje de programación visual desarrollado por el grupo Lifelong Kindergarten del MIT Media Lab. Scratch es un software libre. Esto significa que está disponible gratuitamente para todos y que se distribuye bajo una licencia de software libre, la Licencia Pública General de Massachusetts (MIT License). Esta licencia permite a los usuarios utilizar, modificar y distribuir el software de manera libre, siempre y cuando se respeten ciertas condiciones. Entre otras cosas, la licencia de Scratch permite a los usuarios utilizar el software para cualquier propósito, incluyendo fines comerciales. También permite modificar el software y distribuir las modificaciones, siempre y cuando se incluya una copia de la licencia y se indique que el software ha sido modificado. En resumen, Scratch es un software libre que permite a los usuarios utilizar, modificar y distribuir el software de manera libre y gratuita, siempre y cuando se respeten las condiciones de la licencia. De hecho, gracias a que está licenciado de esta forma, han surgido decenas de variaciones de Scratch para todo tipos de propósitos, eso sí, siempre educativos y relacionados con las enseñanzas de programación y robótica

</details>#### **<span style="color: #169179;">3. BBC micro:bit y la Teoría del Cambio</span>**

BBC micro:bit, a veces escrito como Microbit o Micro Bit, es un pequeño ordenador del tamaño de media tarjeta de crédito, creado en 2015 por la BBC con el fin de promover el desarrollo de la robótica y el pensamiento computacional entre la población escolar del Reino Unido. Actualmente su uso está extendido entre 25 millones de escolares de 7 a 16 años de más de 60 países.

[![e74cc3a97963070daee67213f9ccf5268388bd01-790x635.webp](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/e74cc3a97963070daee67213f9ccf5268388bd01-790x635.webp)](https://libros.catedu.es/uploads/images/gallery/2023-03/e74cc3a97963070daee67213f9ccf5268388bd01-790x635.webp)*Tarjeta BBC micro:bit V1. Fuente: [https://microbit.org](https://microbit.org). CC BY-SA 4.0.*

Aunque el proyecto fue iniciado por la BBC, su desarrollo fue llevado a cabo por 29 socios tecnológicos de primera línea. Por ejemplo, la implementación del Bluetooth integrado en la tarjeta corrió a cargo de la fundación propietaria de la marca, Bluetooth SIG, una asociación privada sin ánimo de lucro.

**El hardware y el software resultantes son 100% abiertos**, y están gestionados por una fundación sin ánimo de lucro que comenzó a funcionar en el año 2016, la [Micro:bit Educational Foundation](https://archive.microbit.org/es/about/). La fundación basa sus actuaciones en su Teoría del Cambio,

<details id="bkmrk-teor%C3%ADa-del-cambio-y-"><summary>Teoría del cambio y más sobre microbit</summary>

Teoría del cambio puede resumirse en tres principios:

- El convencimiento de que la capacidad de comprender, participar y trabajar en el mundo digital es de vital importancia para las oportunidades de vida de una persona joven.
- La necesidad de emocionar y atraer a las personas jóvenes por medio de BBC micro:bit, especialmente a las que podrían pensar que la tecnología no es para ellas.
- Diversificar a los estudiantes que eligen las materias STEM a medida que avanzan en la escuela y en sus carreras, para hacer crecer una fuente diversa de talento, impulsando la equidad social y contribuyendo a crear una tecnología mejor.

Para desarrollar sus principios, la fundación trabaja en tres líneas de acción:

- El desarrollo de hardware y software que contribuyan a despertar el entusiasmo en las personas jóvenes hacia la tecnología y hacia las oportunidades que presenta.
- La creación de recursos educativos gratuitos y fáciles de usar que permitan al profesorado enseñar de forma atractiva y creativa.
- La colaboración con entidades asociadas que compartan una misma visión para ofrecer programas educativos de alto impacto en todo el mundo.

<p class="callout info">Uno de los objetivos de la Micro:bit Educational Foundation es llegar a 100 millones de escolares en todo el mundo.</p>

En correspondencia con las líneas de acción y con los principios expuestos, el sistema resultante es muy económico: tanto las placas como los accesorios producidos por terceras empresas tienen un precio muy contenido. Además, dado el carácter abierto del proyecto, están disponibles algunos clones totalmente compatibles, como Elecrow Mbits o bpi:bit. Estos clones son incluso más potentes y económicos que la placa original.

El universo micro:bit destaca por su **alta integración de software y hardware**: basta un clic de ratón para cargar las librerías necesarias para que funcione cualquier complemento robótico, como sensores, pantallas, tarjetas de Internet de las Cosas, robots, casas domóticas, etc.

La programación de la placa se realiza desde un ordenador a través de un navegador cualquiera, estando disponibles **12 lenguajes de programación**. De nuevo, por ser un sistema abierto, existen múltiples soluciones de programación, aunque las más común es [MakeCode](https://makecode.microbit.org/).

[![MakeCode.png](https://libros.catedu.es/uploads/images/gallery/2023-03/scaled-1680-/makecode.png)](https://libros.catedu.es/uploads/images/gallery/2023-03/makecode.png)*Captura de pantalla del editor MakeCode, [https://makecode.microbit.org/#](https://makecode.microbit.org/).*

El sitio web MakeCode permite programar con bloques y también en Python y en Java, traduciendo de un lenguaje a otro instantáneamente. No se necesita ningún registro en la plataforma para poder programar.

Los programas también pueden guardarse descargados en el ordenador compilados en código de máquina. Al subir de nuevo el programa al editor, se realiza una decompilación automática al lenguaje de bloques, Python o Java. Los programas guardados en código de máquina se pueden cargar directamente en micro:bit, que en el escritorio de un ordenador se maneja como una simple unidad de memoria USB.

MakeCode contiene además múltiples recursos como tutoriales, vídeos, fichas de programación, cursos para el profesorado, ejemplos y propuestas de proyectos y experimentos, todo ello en varios idiomas y clasificado por edades desde los 7 años.

Otra solución muy usada para programar micro:bit es [MicroPython](https://python.microbit.org/v/3), creada por Python Software Foundation, otra organización sin ánimo de lucro.

[MicroCode](https://microsoft.github.io/microcode/#H4sIACVEGGQAAwEAAP//AAAAAAAAAAA=) permite que los más pequeños, a partir de los 6 años de edad, programen micro:bit mediante un sistema de fichas dispuestas en líneas de acción. Están disponibles un tutorial introductorio en 20 idiomas, una guía del usuario y muchos ejemplos. El proyecto es de código abierto.

Micro:bit también es programable en **Scratch** con sólo añadir una extensión al editor.

Todos los entornos de desarrollo descritos disponen de un simulador de micro:bit, por lo que ni siquiera resulta necesario disponer de una tarjeta física para aprender a programar.

Una vez realizada la programación, la placa y sus complementos pueden funcionar desconectados del ordenador por medio de un cargador de móvil, una batería externa o un simple par de pilas alcalinas.

</details><details id="bkmrk-versiones-y-caracter"><summary>Versiones y características de micro:bit</summary>

A pesar de su pequeño tamaño, micro:bit es un sistema potente. Existen dos versiones de la placa. La más moderna, llamada micro:bit V2, tiene las siguientes características:

- Procesador de 64 MHz.
- 512 KB de RAM Flash y 128 KB de RAM.
- Matriz de 5 x 5 LED rojos.
- Dos pulsadores mecánicos y un tercer pulsador de apagado y reset.
- Un pulsador táctil.
- Micrófono y altavoz.
- Acelerómetro y brújula.
- Sensores de luz y de temperatura.
- Comunicación con otras placas por Bluetooth de bajo consumo.
- Alimentación a 3 V o por USB.
- 25 pines de entradas y salidas para conectar motorcitos, sensores, placas de Intenet de las Cosas, robots y, en general, cualquier otro tipo de accesorio.
- 200 mA de intensidad de corriente disponibles en las salidas para alimentar accesorios.

</details>#### **<span style="color: #169179;">4.- LA IMPORTANCIA DEL OPEN SOURCE / CÓDIGO ABIERTO EN EDUCACIÓN</span>**

La creación, distribución, modificación y redistribución del hardware y software libre así como su utilización, están asociados a una serie de valores que deberían ser explicados en la escuela a nuestros alumnos para dar una alternativa a la versión mercantilista de que cualquier creación es creada para obtener beneficios económicos.

En GNU, pusieron especial énfasis en la difusión del software libre en colegios y universidades, promoviendo una serie de valores fundacionales:

<details id="bkmrk-valores-gnu-%C2%A0compart"><summary>Valores GNU</summary>

##### <span style="font-family: OpenSymbol; mso-fareast-font-family: OpenSymbol; mso-bidi-font-family: OpenSymbol; mso-bidi-font-weight: bold;"><span style="mso-list: Ignore;"><span style="font: 7.0pt 'Times New Roman';"> </span></span></span>**Compartir**

<span style="font-family: OpenSymbol; mso-fareast-font-family: OpenSymbol; mso-bidi-font-family: OpenSymbol;"><span style="mso-list: Ignore;"> </span></span>El código fuente y los métodos del hardware y software libre son parte del conocimiento humano. Al contrario, el hardware software privativo es conocimiento secreto y restringido. El código abierto no es simplemente un asunto técnico, es un asunto ético, social y político. Es una cuestión de derechos humanos que la personas usuarias deben tener. La libertad y la cooperación son valores esenciales del código abierto. El sistema GNU pone en práctica estos valores y el principio del compartir, pues compartir es bueno y útil para el progreso de la humanidad. Las escuelas deben enseñar el valor de compartir dando ejemplo. El hardware y software libre favorece la educación pues permite compartir conocimientos y herramientas.

##### **Responsabilidad social**

<span style="font-family: OpenSymbol; mso-fareast-font-family: OpenSymbol; mso-bidi-font-family: OpenSymbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt 'Times New Roman';"> </span></span></span>La informática, electrónica, robótica... han pasado a ser una parte esencial de la vida diaria. La tecnología digital está transformando la sociedad muy rápidamente y las escuelas ejercen una influencia decisiva en el futuro de la sociedad. Su misión es preparar al alumnado para que participen en una sociedad digital libre, mediante la enseñanza de habilidades que les permitan tomar el control de sus propias vidas con facilidad. El hardware y el software no debería estar bajo el poder de un desarrollador<span style="mso-spacerun: yes;"> </span>que toma decisiones unilaterales que nadie más puede cambiar.

##### **Independencia**

<span style="font-family: OpenSymbol; mso-fareast-font-family: OpenSymbol; mso-bidi-font-family: OpenSymbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Las escuelas tienen la responsabilidad ética de enseñar la fortaleza, no la dependencia de un único producto o de una poderosa empresa en particular. Además, al elegir hardware y software libre, la misma escuela gana independencia de cualquier interés comercial y evita permanecer cautiva de un único proveedor. Las licencias de hardware y software libre no expiran

##### **Aprendizaje**

<span style="font-family: OpenSymbol; mso-fareast-font-family: OpenSymbol; mso-bidi-font-family: OpenSymbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt 'Times New Roman';"><span style="font-family: OpenSymbol;"> </span></span><span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Con el open source los estudiantes tienen la libertad de examinar cómo funcionan los dispositivos y programas y aprender cómo adaptarlos si fuera necesario. Con el software libre se aprende también la ética del desarrollo de software y la práctica profesional.

##### **Ahorro**

<span style="font-family: OpenSymbol; mso-fareast-font-family: OpenSymbol; mso-bidi-font-family: OpenSymbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt 'Times New Roman';"><span style="font-family: OpenSymbol;"> </span></span><span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Esta es una ventaja obvia que percibirán inmediatamente muchos administradores de instituciones educativas, pero se trata de un beneficio marginal. El punto principal de este aspecto es que, por estar autorizadas a distribuir copias de los programas a bajo costo o gratuitamente, las escuelas pueden realmente ayudar a las familias que se encuentran en dificultad económica, con lo cual promueven la equidad y la igualdad de oportunidades de aprendizaje entre los estudiantes, y contribuyen de forma decisiva a ser una escuela inclusiva.

##### **Calidad**

<span style="font-family: OpenSymbol; mso-fareast-font-family: OpenSymbol; mso-bidi-font-family: OpenSymbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt 'Times New Roman';"><span style="font-family: OpenSymbol;"> </span></span><span style="font: 7.0pt 'Times New Roman';"> </span></span></span>Estable, seguro y fácilmente instalable, el software libre ofrece una amplia gama de soluciones para la educación.

</details><details id="bkmrk-etiqueta-en-los-a%C3%B1os"><summary>Para saber más</summary>

En los años 90, era realmente complicado utilizar un sistema operativo Linux y la mayoría de la cuota del mercado de los ordenadores personales estaba dominada por Windows. Encontrar drivers de Linux para el hardware que tenía tu equipo era casi una quimera dado que las principales compañías de hardware y de software no se molestaban en crear software para este sistema operativo, puesto que alimentaba la independencia de los usuarios con respecto a ellas mismas.

Afortunadamente, y gracias a la creciente presión de su comunidad de usuarios, estas situaciones pertenecen al pasado, y las compañías fabricantes de hardware han tenido que variar el rumbo. Hoy en día tenemos una gran cantidad de argumentos en los que nos podemos basar para dar el salto hacia cualquier sistema operativo basado en Linux. Tal y como podemos leer en educacionit.com, podemos encontrar las siguientes ventajas:

- Es seguro y respeta la privacidad de los usuarios: Aunque hay compañías linuxeras, como Oracle, Novell, Canonical, Red Hat o SUSE, el grueso de distribuciones y software Linux está mantenido por usuarios y colectivos sin ánimo de lucro. De esta forma, podemos confiar en que una comunidad que tiene detrás millones de usuarios, pueda validar el código fuente de cualquier de estas distribuciones, asegurándonos la calidad de las mismas, compartir posibles problemas de seguridad, y sobre todo, estar bien tranquilos con la privacidad y seguridad de nuestros datos e información personal, aspecto que debería ser crítico y determinante a la hora de trabajar con los datos de menores de edad en las escuelas y colegios.
- Es ético y socialmente responsable: La naturaleza de Linux y su filosofía de código abierto y libre hace posible que cualquier usuario con conocimientos pueda crear su propia distribución basada en otras o probar las decenas de versiones que nos podemos encontrar de una distribución Linux. Este es el caso de Ubuntu por ejemplo. Gracias a esta democratización de los sistemas operativos, incluso han podido aparecer en nuestras vidas nuevos dispositivos basados en software y hardware libre como Arduino y Raspberry Pi.
- Es personalizable: el código abierto permite su estudio, modificación y adaptación a las necesidades de los diferentes usuarios, teniendo así no un único producto sino una multiplicidad de distribuciones que satisfacen las necesidades de los diferentes colectivos a los que se dirijan. Especialmente útiles son las distribuciones educativas libres, que pueden ser adaptadas a las necesidades de las escuelas.
- Está basado en las necesidades de los usuarios y no en las de los creadores de hardware y software
- Es gratis. La mayoría de las distribuciones Linux son gratuitas y de libre descarga
- Es fácil de usar. Una de las barreras que durante años ha evitado a muchos usar Linux es su complejidad. Las distribuciones orientadas al consumo doméstico cumplen los estándares de simplicidad y necesidades que cualquier usuario sin conocimientos de tecnología pueda necesitar. El entorno gráfico es sencillo, intuitivo, e incluso se puede customizar para que se pueda parecer a los más conocidos como Windows y MacOS. Además, vienen con la mayoría de aplicaciones que cualquier usuario puede necesitar: ofimáticas, edición de audio y vídeo y navegación por Internet.
- Es suficiente. Tiene su propio market de aplicaciones. Como el resto de sistemas operativos ya sea para ordenadores o dispositivos móviles, también podemos encontrar un lugar único donde poder descargar cientos de aplicaciones para todos los gustos y necesidades.

Por estas razones, el software libre se ha expandido por toda la comunidad educativa en los últimos años de manera exponencial. Un buen ejemplo de lo que estamos hablando es **Bookstack**, este sistema de edición de contenidos para cursos que utiliza Aularagón así como el uso de **Moodle** como plataforma de enseñanza y aprendizaje. En cuanto a sistema operativo para ordenadores, en Aragón disponemos de nuestra propia distribución Linux: Vitalinux EDU. Tal y como podemos leer desde su página web: **Vitalinux EDU (DGA)** es la distribución Linux elegida por el Gobierno de Aragón para los centros educativos. Está basada en Vitalinux, que se define como un proyecto para llevar el Software Libre a personas y organizaciones facilitando al máximo su instalación, uso y mantenimiento. En concreto Vitalinux EDU (DGA) es una distribución Ubuntu (Lubuntu) personalizada para Educación, "tuneada" por los requisitos y necesidades de los propios usuarios de los centros y adaptada de forma personalizada a cada centro y a la que se ha añadido una aplicación cliente Migasfree. De ésta forma, obtenemos:

1. Un **Sistema Ligero.** Permite "revivir" equipos obsoletos y "volar" en equipos modernos. Esto garantiza la sostenibilidad de un sistema que no consume recursos de hardware innecesariamente ni obliga a la sustitución del hardware cada poco tiempo en esa espiral de obsolescencia programada en la que se ha convertido el mercado tecnológico.
2. **Facilidad en la instalación y el uso** del sistema mediante programas personalizados.
3. Un Sistema que **se adapta al centro** y/o a cada aula o espacio, y no un centro que se adapta a un Sistema Operativo.
4. **Gestión de equipo y del software de manera remota** y desatendida mediante un servidor Migasfree.
5. **Inventario** de todo el hardware y software del equipo de una forma muy cómoda.
6. Soporte y apoyo de una **comunidad** que crea, comparte e innova constantemente.

</details>

# 1. Preparando el terreno

# Conoce Arduino

{{@2936}}

# Hardware del Arduino

{{@2937}}

# Software del Arduino

{{@7552}}

# Instalando mBlock

**mBlock** es un programa especializado en el manejo de los robots de Makeblock ([ver cursos de mBot en Aularagon](https://libros.catedu.es/books/robotica/page/hardware)), pero permiten muchas arquitecturas de placas pues los mismos robots de Makeblock estan basados en placas de hardware libre Arduino, ESP32...

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-7bdqp4nc.jpeg)

<p class="callout info">Hay dos versiones, **online y offline**, las dos son buenas, no obstante   
- Si tienes Windows o Mac preferimos la **versión** **offline** para no saturar la red en los centros, rapidez y comodidad.   
- Si utilizas **Linux** o **Chromebook** tienes que usar la **versión online** obligatoriamente pues no hay versión instalable.  
Tanto una opción como la otra, permite tener los proyectos en la nube de Makeblock, compartir, embeberlos, etc...</p>

#### <span style="text-decoration: underline;"><span style="color: rgb(22, 145, 121); text-decoration: underline;">**Versión online** </span></span>

Para la versión web **primero hay que instalar mLink driver** nos vamos a [https://mblock.cc/pages/downloads](https://mblock.cc/pages/downloads) y abajo nos encontramos mLink para descargar, <span style="color: rgb(224, 62, 45);">**descarga el mLink correspondiente a tu sistema operativo**</span> :

[![mlink-1.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/mlink-1.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/mlink-1.png)  
*Licencia CC-BY -SA [https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)*

Lo instalamos, y entonces pedirá instalar los **drivers** que son pequeños programas que comunican el PC con el harware del robot

[![mlink-drivers.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/mlink-drivers.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/mlink-drivers.png)  
*Licencia CC-BY -SA [https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)*

<p class="callout success">Si utilizas **Chromebook** lee la siguiente [guía ](https://support.makeblock.com/hc/en-us/articles/19412317319191-Device-Connection-Guide-for-Chromebook-Latest-Version)para conectar el robot</p>

Una vez instalado **ya podemos entrar en la web [https://ide.mblock.cc/](https://ide.mblock.cc/)** para programar en bloques nuestro robot

<p class="callout info">Nota: La página [https://ide.mblock.cc/](https://ide.mblock.cc/) no suele estar bien situada en los buscadores si ponemos *mBlock*, la página que suele salir es esta [https://www.mblock.cc/en/ y](https://www.mblock.cc/en/) nos da dos opciones, trabajar con bloque, o con Python, elegimos bloques[![2024-05-16 23_50_10-mBlock - One-Stop Coding Platform for Teaching and Learning.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-23-50-10-mblock-one-stop-coding-platform-for-teaching-and-learning.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-23-50-10-mblock-one-stop-coding-platform-for-teaching-and-learning.png)  
Si has entrado sin querer en la URL [https://ide.makeblock.com/](https://ide.makeblock.com/) no permite el logueo en Europa  
En resumen, la URL correcta es  **[https://ide.mblock.cc/](https://ide.mblock.cc/)**   
  
</p>

En este editor **tenemos que loguearnos** podemos crear un nuevo usuario, utilizando una cuenta de Google/Apple o registrarnos con un correo electrónico

[![2024-05-16 23_53_10-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-05/scaled-1680-/2024-05-16-23-53-10-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-05/2024-05-16-23-53-10-mblock-block-based-ide-coding-for-beginners.png)

#### <span style="text-decoration: underline;"><span style="color: rgb(22, 145, 121); text-decoration: underline;">**Versión offline Windows o Mac** </span></span>

<span style="color: rgb(0, 0, 0);">Vamos a [https://mblock.cc/pages/downloads](https://mblock.cc/pages/downloads) y descargamos la versión correcta a nuestro sistema operativo.</span>

<span style="color: rgb(0, 0, 0);">[![download-version.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/download-version.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/download-version.png)  
*Licencia CC-BY -SA [https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)*</span>

<span style="color: rgb(0, 0, 0);">En windows hacemos doble click en el archivo ejecutable descargado</span>

<span style="color: rgb(0, 0, 0);">[![installing-download.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/installing-download.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/installing-download.png)  
*Licencia CC-BY -SA [https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)*</span>

Lo instalamos, y entonces pedirá instalar los **drivers** que son pequeños programas que comunican el PC con el hardware del robot

[![install-drivers.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/install-drivers.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/install-drivers.png)  
<span style="color: rgb(0, 0, 0);">*Licencia CC-BY -SA [https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)*</span>

<span style="color: rgb(0, 0, 0);">Algunas veces la ventana de driver de la figura anterior esta escondida en el fondo, hay que minimizar ventanas para acceder a ella.</span>

<span style="color: rgb(0, 0, 0);">En MAC el archivo será un fichero mount con la extensión .dmg, por lo tanto hay que arrastar el icono a la carpeta de aplicaciones</span>

<span style="color: rgb(0, 0, 0);">[![install-mac.png](https://libros.catedu.es/uploads/images/gallery/2025-03/scaled-1680-/install-mac.png)](https://libros.catedu.es/uploads/images/gallery/2025-03/install-mac.png)  
*Licencia CC-BY -SA [https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/](https://docs.arduino.cc/tutorials/alvik/getting-started-mblock/)*</span>

# Dos formas de programar con mBlock

{{@2986}}

# Preparando mBlock y el Arduino

Hay que hacer dos cosas

- Cuando te descargas **mBlock** por defecto está preparado para utilizarlo con los robots (mBot), hay que decirle que no vamos a conectar un robot, que la placa será **Arduino UNO**
- Nuestro **ARDUINO** no pueden entender mBlock por lo que hay que grabarle un software dentro (un software que se graba en una placa hardware se llama **FIRMWARE**, no se borra cuando se apaga) y este firmware entiende lo que le manda mBlock, es decir, si conectamos otro Arduino y no le hemos grabado el firmware, no entenderá a mBlock.

Lo mejor un tutorial muy breve:

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" id="bkmrk--0" src="https://docs.google.com/presentation/d/e/2PACX-1vRLqEoJCT355xMCeCXsd0Wc7JcJRk9JkwLCyzEPb_h1S2IbYKK7OdUf33yWRIXq216Zgh9Da7-gIOq1/embed?start=false&loop=false&delayms=3000" width="100%"></iframe>

# Sensores

{{@7009}}

# Actuadores y otras salidas

{{@11506}}

# Kit de préstamo de CATEDU Arduino

El presente curso parte de que el alumno tiene el kit de préstamo que facilita CATEDU:

[![image-1648632032646.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632032646.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632032646.png)

## <span style="color: rgb(22, 145, 121);">**Arduino UNO**</span>

Se trata de una placa con un microcontrolador **(un micro ordenador**) y puertos digitales y analógicos de entrada y salida. ¿Por qué es tan famoso?

[![image-1648632060408.jpg](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632060408.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632060408.jpg)

- Se trata de una placa de **hardware libre**
- Los programas para controlarlo son de **código abierto**
    - **Conexión por puerto USB** de esta manera, el Arduino obedece al programa del ordenador, pero si queremos: el programa lo grabamos dentro del Arduino y gracias a un conector, puede funcionar con pilas e independiente del ordenador

##### **Puertos:**

- **14 pines digitales** numerados del **0 al 13** y se pueden ser: 
    - De **salida** (sólo tiene dos estados LOW/HIGH)
    - De **entrada** (valores: mínimo 0V y máximo 5V)
- **6 pines de salida "*analógicos*"** 3-5-6-9-10-11 (*sí, has leído bien, se repiten con los anteriores*) tipo [PWM ](https://es.wikipedia.org/wiki/Modulaci%C3%B3n_por_ancho_de_pulsos)(es decir, lo de *salida analógica es una mentirijilla*, es en formato de pulsos con duración proporcional al valor analógico que se quiera representar)
- **6 pines analógicos de entrada** numerados como **A0 hasta A5** (valores: mínimo 0V y máximo 5V) y ellos responden en formato de número entre 0 y 1023.

no está nada mal ¿no? y además barato !!!

# Resistencias

La resistencias sirven para limitar la corriente. Lo utilizaremos en dos ocasiones:

- Limitar la corriente que circula en un diodo
- Limitar la corriente de carga de un condensador

También lo utilizaremos con el pulsador, para separar los voltios y para que tenga una tensión definida cuando el interruptor esté abierto (lo veremos en el siguiente capítulo)

Los valores de las resistencias en Ω se determina mediante la siguiente tabla:

[![image-1648632153105.jpg](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632153105.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632153105.jpg)

# Placa Protoboard

Placa protoboard o placa de pruebas es un tablero con orificios

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-mydxq7pe.png)

Estos se encuentran conectados eléctricamente entre sí de manera interna,el patrón de conexión es de líneas según este esquema:

[![image-1648632178895.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632178895.png) ](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632178895.png)[![image-1648632186997.gif](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632186997.gif)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632186997.gif)

### <span style="color: rgb(22, 145, 121);">**¿Cómo está conectado?**</span>

La línea X (pintada de rojo) está toda conectada y la línea Y (pintada de azul) también.

Las líneas verticales 1 al 47 están conectadas verticalmente separados por la línea del medio, pero no horizontalmente (he pintado de verde las 4 primeras) es decir:

- A1 SI está conectado con B1C1D1E1
- A1 NO está conectado con A2B2C2D2E2
- A1 NO está conectado con F1G1H1I1J1

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-sexdzfob.png)

### **<span style="color: rgb(22, 145, 121);">¿Cómo se utiliza?</span>**

La línea X (pintada de rojo) se suele utilizar para poner la alimentación (5V en nuestro caso) y la línea Y (pintada de azul) se suele conectar a 0V

Las líneas verdes es donde se conectan los componentes de tal manera que se pueda construir el circuito

# Pulsadores

[![image-1648632240664.webp](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632240664.webp)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632240664.webp)

Un pulsador nos permitirá crear entradas digitales al Arduino

Los pulsadores proporcionados abren y cierran los pines que están en vertical, pero no en horizontal pues están conectados (ver figura de la izquierda)

Luego tenemos que fijarnos en los pines, si están en línea son los pines que no están conectados cuando no se pulsa, por lo tanto son estos los que tienen que ir en líneas diferentes de la placa protoboard.

Los pines que están en paralelo están conectados, por lo tanto tienen que estar en la misma línea:

[![image-1648632276077.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632276077.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632276077.png) ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-f9y5ddki.png)

Pero ¿Cómo se conecta? un poco de teoría en la página siguiente.

### <span style="color: rgb(22, 145, 121);">**Esto esta mal**</span>

[![image-1648632330132.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632330132.png)*Fuente Luis Llamas* ](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632330132.png)*[https://www.luisllamas.es/leer-un-pulsador-con-arduino/](https://www.luisllamas.es/leer-un-pulsador-con-arduino/)*

La sencilla razón es la siguiente ¿cuando el interruptor o pulsador esté abierto qué tensión tendrá "Pin digital"?

En vista de protoboard sería así:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-bgbvz7ax.png)

El primer pulsador cuando se cierra si que proporciona 5V al pin 12 por el cable azul pero... ¿y cuando no está pulsado?

El segundo pulsador cuando se cierra sí que proporciona 0V al pin 13 por el pin verde pero... ¿y cuando no está pulsado?

Ah!! y por supuesto ni se te ocurra esto, provocarías un cortocircuito:

[![image-1648632391355.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632391355.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632391355.png)

*Fuente Luis Llamas [https://www.luisllamas.es/leer-un-pulsador-con-arduino/](https://www.luisllamas.es/leer-un-pulsador-con-arduino/)*

### <span style="color: rgb(22, 145, 121);">**Esto esta bien**</span>

Lo correcto es hacerlo a través de resistencias, hay dos configuraciones, pull down o pull up según si la resistencia está abajo o arriba

[![image-1648632523286.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632523286.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632523286.png) ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-noukkdmt.png)

la más utilizada y lógica es la primera pull down, pues lo lógico es que cuando se cierra el pulsador, queremos transmitir un 1 lógico

*Resumiendo: lo que tienes que hacer es una de estas dos configuraciones, la opción recomendada es PULL UP para que OFF = 0 y ON = 1*

[![image-1648632493133.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632493133.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632493133.png)

*Fuente Luis Llamas [https://www.luisllamas.es/leer-un-pulsador-con-arduino/](https://www.luisllamas.es/leer-un-pulsador-con-arduino/)*

El valor de la resistencia puede ser de valores de algunos k

Visto en la placa el formato **pull down**:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-ephsjoiq.png)

Es decir (en la foto el cable verde del anterior dibujo es el blanco en la foto):

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-ui4hzkpo.png)

### <span style="color: rgb(22, 145, 121);">**CONEXIÓN CON ARDUINO**</span>

Dos ejemplos sencillos para utilizar el pulsador, utilizaremos la resistencia configuración pull down y lo conectaremos al Arduino por A0

Utilizaremos la configuración PULL-DOWN es decir la resistencia "abajo" y el pulsador arriba, de esta manera:

- Cuando e pulsador está **abierto**, entonces enviamos un **'0**' lógico al Arduino.
- Cuando e pulsador está **cerrado**, entonces enviamos un **'1'** lógico al Arduino.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-melxud6n.png)

La forma de conectarlo en la placa Protoboard es (en este ejemplo lo conecta al pin digital 4):

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-ybgzt9er.png)

Si quieres saber su contraria (Pull-up) [visita esta página.](https://catedu.github.io/programa-arduino-mediante-codigo/resistencias_pullup_y_pulldown.html)

# LED

LED= light-emitting diode: es un diodo emisor de luz que tiene polaridad, es decir, que tiene + y -

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-y9y8um1e.png)

### <span style="color: rgb(22, 145, 121);">**¿Cómo se conecta?**</span>

Pues a través de una resistencia, de valor de algunos k o centenares de Ω, cuanto más pequeña más se ilumina pero más peligro de fundir el led

En el ejemplo : conexión a la salida del pin 13 :

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-aomuce56.png)

NOTA: A veces conectaremos el LED diréctamente, por simplificar, pues el ARDUINO TIENE UNA RESISTENCIAS INTERNAS DE 30k pero no es una buena práctica

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-yf3siwlx.png)

## <span style="color: rgb(22, 145, 121);">**Ejemplo de utilización**</span>

<p class="callout danger">Mira el siguiente circuito **NO LO HAGAS SÓLO MÍRALO Y OBSERVA:**</p>

#### La alimentación

- La lí<span style="color: #444444;">nea</span><span style="color: #444444;"> X **en esta placa está abajo del todo (para que veas otro modelo)** y se ha conectado con los 5V del Arduino con un cable rojo</span>
- <span style="color: #444444;"> - La línea Y es la segunda empezando de abajo y se ha conectado a 0V (GND del Arduino) con un cable azúl </span>

#### El pulsador

- Se ha conectado un pin a masa a través de una resistencia y un pequeño cable azul
- Ese pin será la entrada al Arduino y con un cable negro va al pin digital 8 del Arduinio
- El otro extremo a 5V con un cable rojo

#### El LED

- Un extremo (el ánodo pata lárga) a las diferentes salidas digitales del Arduino (pines 7-6-5-4-3-2) a través de una resistencia
- El otro extremo (cátodo pata corta) a masa-Linea Y

[![image-1648632735275.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632735275.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632735275.png)

[![image-1648632740892.jpg](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632740892.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632740892.jpg)

# Condensador

## **<span style="color: rgb(22, 145, 121);">¿Qué es?</span>**

Es un elemento que consta de dos placas separadas que son capaces de cargarse eléctricamente, su capacidad se mide en Faradios. Se puede interpretar como un globo que nos permite hincharlo de aire, y la capacidad los litros. Pero también pueden **explotar** !!! luego lee con atención:

<p class="callout danger">**ATENCIÓN** Los condensadores (*normalmente a partir de 1μF son electrólíticos*) tienen **POLARIDAD QUE ES IMPORTANTE** </p>

**RESPETARLA,** es decir, tienen un pin marcado con el signo (-) normalmente con franja blanca que tiene que ir al (-) o masa (GND 0V) de lo contario, revientan, con el consecuente peligro, más peligrosos cuanto más capacidad tienen.

<p class="callout danger">***ATENCIÓN** Los condensadores tienen una tensión máxima de trabajo, marcado en el propio condensador, en nuestro caso los condensadores marcan 25V, luego se pueden utilizar sin problemas con el Arduino que la tensión máxima es 5V. Como si fuera la máxima presión que aguanta el globo antes de explotar.*</p>

<span style="color: rgb(0, 0, 0);">¿No te lo crees? pues mira..</span>

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/sfAbv-0hQsU" width="560"></iframe>

### **<span style="color: rgb(22, 145, 121);">Carga y descarga</span>**

Si lo hacemos a través de una resistencia, tarda un tiempo a cargarse y también a descargarse (como si en el globo lo deshincháramos pero estrechando la boca)

El circuito de carga sería

[![image-1648632777199.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632777199.png) ](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632777199.png)![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-o4heu7jo.png)

Fíjate que el lado (-) (la banda blanca) está conectado a GND

El **circuito de descarga** sería

[![image-1648632819763.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632819763.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632819763.png) ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-bmhxihhf.png)

### **<span style="color: rgb(22, 145, 121);">Cálculos</span>**

El tiempo de carga y de descarga se calcula con la fórmula :

T = 5 R C

En el caso de los circuitos de arriba T = 5 \* 100k \* 10μ = 5 \* 100 000 \* 0.00001 = 5 segundos

Igual que un globo, la carga evoluciona muy rápidamente al principio, pero a medida de que se va llenando, cuesta más, la gráfica de carga de un condensador es la siguiente:

[![image-1648632850406.jpg](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632850406.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632850406.jpg)

Y para la descarga es la siguiente

[![image-1648632859742.jpg](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648632859742.jpg)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648632859742.jpg)

# LDR

LDR= Light Depended Resistor es una resistencia que disminuye su valor cuando aumenta la luz.

Si se coloca en serie con una resistencia de un valor parecido, el punto de unión (cable verde) tiene una tensión variable con la luz que lo puede leer Arduino, en este esquema lo lee por la entrada A0

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-2xq9ysgy.png)

Si hay luz, el LDR disminuye su resistencia por lo tanto disminuye el valor de la tensión en A0, y viceversa.

# Sensor ultrasonidos

El sensor dispone de un emisor T que emite una señal de ultrasonidos (a veces no es ultrasonidos, pues algunos lo pueden oir) y un receptor R que capta el eco del objeto que está delante de él. Su rango de detección va desde 2cm a 450cm

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-l1bcibrj.jpeg)

Tiene cuatro pines, dos son la alimentación que conectaremos Vcc a 5V, GND a 0V y los otros dos son los importantes:

- Trigger que emite un pulso
- Echo que recibe el pulso

Según el tiempo entre el pulso y el eco (T), la distancia a la cual se encuentra el objeto es : distancia = T \* velocidad\_sonido/2

Podemos conectar el pin trigger y echo donde queramos de las entradas y salidas digitales del Arduino, en este curso vamos a tomar como criterio:

- Trigger en el pin 4
- Echo en el pin 3

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-rekl7foj.png)

**No tenemos que utilizar la fórmula para calcular la distancia, mBlock ya lo hace** y la instrucción es muy sencilla, sólo hay que proporcionarle qué pin hemos conectado el trigger y qué pin hemos conectado el echo y él nos devuelve la distancia en centímetros:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-bgfltmpz.png)

# Métodos para interactuar los objetos y el robot (dispositivo)

{{@13349}}

# 2. Circuitos sencillos

# Un LED

### <span style="color: rgb(22, 145, 121);">**Circuito un led directo**</span>

Para las siguientes propuestas, el montaje es colocar un diodo LED, en este caso no es necesario complicarse, podemos montarlo directamente en el Arduino uno colocando el ánodo (pata más larga) en el pin13 y el cátodo (pata más corta) en masa GND, elegimos el pin 13 por estar al lado de GND

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-zq3gosop.png)

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-momwf2gp.png)

<p class="callout info">No es una buena práctica conectar un diodo directamente sin pasar por una resistencia, pues en teoría es un cortocircuito, PERO si se hace no pasa nada pues Arduino tiene una limitación interna de 20mA</p>

Luego lo recomendable es hacerlo pasar por una resistencia, usando la placa PROTOBOARD

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-duyrwjkk.png)

Para el cálculo de la resistencia, debemos de tener en cuenta que la máxima corriente es 20mA, que la tensión de salida es 5V y que el diodo tiene una tensión Vd de funcionamiento, que depende de su color:

Rminima = (5V-Vd)/20mA

<table id="bkmrk-color-vd-resistencia"><thead><tr><th>Color</th><th>Vd</th><th>Resistencia mínima Ohm</th></tr></thead><tbody><tr><td>Rojo</td><td>1.8V</td><td>160</td></tr><tr><td>Amarillo</td><td>3.2V</td><td>140</td></tr><tr><td>Verde</td><td>3.2V</td><td>90</td></tr></tbody></table>

### <span style="color: rgb(22, 145, 121);">**Intermitente**</span>

Una propuesta muy sencilla

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--5" src="//www.youtube.com/embed/jxszyuTrRF8%20" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

#####   
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-un4p3nvf.png)  
  


La captura está realizada con mBlock 3.0 no hay problema en hacerlo igual con mBlock 5.0

Aquí no hay ninguna interacción con el ordenador, este programa es candidato para ejecutarlo desde el Arduino como desde el ordenador. Vamos a añadirle algo de interacción con el ordenador en la siguiente propuesta.

### <span style="color: rgb(22, 145, 121);">**Luz interactiva**</span>

Realizar un programa que al pulsar la tecla espacio, se encienda el led, un personaje cambie el disfraz, cambie el fondo y que suene un sonido

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--6" src="//www.youtube.com/embed/oiOvVsE_6fc" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

Con mBlock5.0 lo tienes aquí [https://planet.mblock.cc/project/3265812](https://planet.mblock.cc/project/3265812)

Declaramos una variable global ENCIENDE, es decir, estamos usando el método VARIABLE GLOBAL de [https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock](https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/dos-formas-de-programar-con-mblock)

En el objeto oso

[![arduino-led-interactivo2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-led-interactivo2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-led-interactivo2.png)

En el dispositivo Arduino

[![arduino-led-interactivo1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-led-interactivo1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-led-interactivo1.png)

Con mBlock 3.0  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-ozths4lq.png)

# Pulsador

Vamos a realizar el Arduino según el apartado CONEXIÓN CON ARDUINO que hemos visto en [https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/pulsadores](https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/pulsadores)

#### <span style="color: rgb(22, 145, 121);">**Propuesta**</span>

Realizar un programa con la configuración de pulsador pull down en la entrada analógica A0 y un led en el 13, que cuando se pulse se encienda el LED

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--5" src="//www.youtube.com/embed/je7V-1WSidU" width="560"></iframe>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-r4cnqaaf.png)

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

Por la entrada A0 cuando el pulsador está abierto hay 0V y cuando está cerrado hay 5V, luego los valores que tiene A0 son 0 y 1023 respectivamente  
  
Pero eso **en teoría** pues si realizamos este programa:  
[![image-1648635843759.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648635843759.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648635843759.png)  
  
Ocurre esto:  
  
<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/zCNcD2EQbQw" width="560"></iframe>

  
  
¿Por qué? seguramente cualquier defecto de conexión o si la resistencia es elevada, la tensión se queda flotante y ya el valor de A0 no es 0 sino va tomando valores, que algunas veces son 0 pero otras veces no lo son (por eso no está totalmente iluminado)  
  
Luego lo mejor es subir el valor, hemos puesto 500 y sí que funciona correctamente  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-yueorllb.png)

#### <span style="color: rgb(22, 145, 121);">**Pulsador interactivo**</span>

Realizar un programa que al apretar el pulsador, que el panda cambie de disfraz, haga un sonido, diga algo ... además de encender el LED con la misma configuración que la propuesta anterior

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--6" src="//www.youtube.com/embed/7z6QZy22lG8" width="560"></iframe>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-cbw8yyny.png)

#### <span style="color: rgb(22, 145, 121);">**Solución**</span>

Con mBlock5 lo tienes aquí [https://planet.mblock.cc/project/3265849](https://planet.mblock.cc/project/3265849)

Utilizaremos la técnica BROADCAST explicado en [https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock](https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/dos-formas-de-programar-con-mblock)

En el dispositivo ARDUINO

[![arduino-pulsadorinteractivo1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pulsadorinteractivo1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pulsadorinteractivo1.png)

En el objeto PANDA

[![arduino-pulsadorinteractivo2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pulsadorinteractivo2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pulsadorinteractivo2.png)

<p class="callout success">Nota: Se podría hacer un SI - SINO pero programando de esta forma abrimos la posibilidad de ampliar si el mensaje encendido es por ejemplo = 2</p>

Con mBlock3  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-zegi1xnq.png)

# Condensador

## Propuesta

Realizar un programa que cargue y descargue el condensador y que lo visualice en un objeto.

La propuesta es con un condensador de 10μF y dos resistencias de centenares de k, según lo visto en el módulo M1 esto nos dará un tiempo de carga y descarga de varios segundos

<p class="callout danger">**OJO CONECTAR EL PIN (-) DEL CONDENSADOR A GND peligro de explosión si se conecta al revés**</p>

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/sfAbv-0hQsU" width="560"></iframe>

Las resistencias colocarlos de tal manera que uno sea para la carga y otro para la descarga.

Un cable suelto, en uno extremo el terminal (+) del condensador y el otro suelto preparado para tocar la resistencia de carga o la de descarga.

Esta misma conexión que lo lea Arduino, por ejemplo por A0

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-nmvhy0dt.png)C

Visualizar la carga en un objeto Scratch que aumente de volumen:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--0" src="//www.youtube.com/embed/08FM_y8rujc" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121); background-color: rgb(255, 255, 255);">**Solución**</span>

Es muy sencillo, fija el tamaño de la pelota al valor del pin A0  
  
Lo hemos hecho a través de una variable auxiliar "carga" para poder visualizar numéricamente su valor.

Con mBlock 5.0 lo tienes aquí [https://planet.mblock.cc/project/3265873](https://planet.mblock.cc/project/3265873)

En el dispositivo ARDUINO

[![arduino-condensador1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-condensador1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-condensador1.png)

En el objeto PELOTA

[![arduino-condensador2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-condensador2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-condensador2.png)

<span style="color: rgb(0, 0, 0);">Con mBlock 3.0</span>  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-kydd8enk.png)

### <span style="color: rgb(22, 145, 121);">**AMPLIACIÓN**</span>

Se puede aprovechar esta experiencia para:

- Calcular el tiempo de carga, si coincide con la fórmula T = 5RC
- Visualizar que la pelota se carga o aumenta de volumen muy rápidamente al principio y luego lentamente, tal y como indica la teoría vista en el módulo 1
- Igualmente en la descarga

# LDR

Realizar un programa que visualice en un objeto Scratch la cantidad de luz

El circuito es el siguiente: el LDR conectado a A0 y a una resistencia (la resistencia PULL UP para que la tensión que mida A0 sea la del LDR) y un objeto que aumente de tamaño según el valor de A0

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-muqgbuky.png)

Y el vídeo

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/b89sS6mQ4_Q" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

El programa es el siguiente:

Lo hemos hecho a través de una variable auxiliar "carga" para poder visualizar numéricamente su valor.

Con mBlock 5.0 lo tienes aquí [https://planet.mblock.cc/project/3265873](https://planet.mblock.cc/project/3265873)

En el dispositivo ARDUINO

[![arduino-condensador1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-condensador1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-condensador1.png)

En el objeto PELOTA

[![arduino-condensador2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-condensador2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-condensador2.png)

##### Y en mblock 3.0

[![image.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/image.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/image.png)

OOOPAAAA !!! ¡¡ Pero si es el mismo que el que acabamos de ver !!! El condensador  
  
 ¡¡¡ vaya tontería !!!

Simplemente la variable **carga** no es el condensador sino la oscuridad

¿Que quieres cambiar el nombre de la variable **carga** por **oscuridad**? pues vale...  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-qauzkd0y.png)

# Ultrasonidos

Pues ya que estamos con la pelota, pues también seguimos: Hacer un programa que se hinche la pelota según la distancia.

En este caso, como la el sensor de ultrasonidos va desde 2 cm a 40cm, nuestra propuesta es que el tamaño se cambie multiplicado x50 ese valor, es decir "cambiar tamaño 50xdistancia", de no hacer esto, la pelota sale demasiado pequeña, o el objeto tendría que estar muy lejos para que se vea a un tamaño razonable.

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/2Pc2Rg0RqEo" width="560"></iframe>

La configuración la explicada en el módulo 1 es decir:

- Trigger en el pin 4
- Echo en el pin 3

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-lizv18lo.png)

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

Pues el programa es muy parecido a los anteriores:

Con mBlock 5

<span style="text-decoration: underline;">Opción sin instalar extensión </span>

<span style="text-decoration: underline;">lo tienes aquí https://planet.mblock.cc/project/3266117</span>

[![arduino-pelotahinchadistancia6.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia6.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia6.png)

<p class="callout warning">Estas funciones SOLO FUNCIONAN EN MODO CARGA</p>

<span style="text-decoration: underline;">Opción instalando extensión </span>

<span style="text-decoration: underline;">lo tienes aquí [https://planet.mblock.cc/project/3266063](https://planet.mblock.cc/project/3266063)</span>

Pulsamos abajo al +

[![arduino-pelotahinchadistancia3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia3.png)

Buscamos extensiones para el sensor de ultrasonidos HC-SR04, nosotros hemos elegido esta

[![arduino-pelotahinchadistancia4.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia4.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia4.png)

Que instala estas instrucciones

[![arduino-pelotahinchadistancia5.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia5.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia5.png)

<p class="callout warning">Esta extensiones (como suele pasar cuando instalamos una extensión) SOLO FUNCIONAN EN MODO CARGA</p>

Luego para transmitir la distancia al objeto pelota, utilizamos la técnica de **BROADCAST** que vimos en [https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock](https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/dos-formas-de-programar-con-mblock)

Al dispositivo ARDUINO el programa es sin la extensión

[![arduino-pelotahinchadistancia7.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia7.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia7.png)

Con la extensión

[![arduino-pelotahinchadistancia1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia1.png)

En el objeto PELOTA el programa es

[![arduino-pelotahinchadistancia2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-pelotahinchadistancia2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-pelotahinchadistancia2.png)

Con mBlock3  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-nm6yxpvl.png)

# 3. Circuitos más complejos

# LDR y LEDs

Esta vez vamos a convertir el valor de la oscuridad en luces. Para ello necesitaremos:

- **10 LEDs** puestos consecutivamente. Vamos a colocarlos desde el pin 2 hasta el 11 (el 1 está ocupado con TX)
- El sensor LDR conectado a una entrada A0
- El programa tiene que convertir el valor de la oscuridad que detecta el LDR en las luces, es decir cuanto más oscuridad más luces encendidas.

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-lu65gi95.png)

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/78hqYoimEV4" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

La solución tiene la complejidad del valor de la entrada A0 que va desde 0 hasta 1023 por lo tanto, hay que convertir estos valores en valores del 2 al 11 correspondiente a los LEDs  
  
La forma más sencilla de reconvertir A0 es dividir A0 entre 100 y sumarle un 1 de esta manera aproximadamente los valores se convierten en 2-11

Otra opción es en mBlock 5.0 existe la función MAPEAR y por lo tanto también se puede hacer

[![mapear.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/mapear.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/mapear.png)

En vez de

[![mapear2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/mapear2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/mapear2.png)  
  
Si el LED se menor que el valor A0 ya convertido, encender el LED, en caso contrario apagarlo  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-8hptlmwo.png)

La captura es en mBlock 3 pero En mBlock5 es igual

# Condensador y LEDs

En este ejercicio proponemos que se visualice la carga y descarga de un condensador, no en una pelota que se hincha como hicimos en el M2, sino con las luces

Utilizaremos el formato de LEDs del ejercicio anterior, es decir 10 LEDs colocados consecutivamente, desde el pin 2 hasta el pin 11

La entrada será el condensador por el pin A0

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-kv8dxgck.png)

El cable verde suelto será el que manualmente tocará a una resistencia o a otra para que se cargue o descargue:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/_O1GhMW3Z3U" width="560"></iframe>

##### <span style="background-color: rgb(255, 255, 255); color: rgb(22, 145, 121);">**Solución**</span>

Pero si... ¡¡¡ ES EL MISMO QUE EL EJERCICIO ANTERIOR LDR Y LEDS !!!  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-99kousez.png)

# Timbre

Proponemos que cuando se pulse el pulsador, se enciendan las luces y toque un tono

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/tDT2SgXXE5A" width="560"></iframe>

El pulsador con la resistencia pull-down al pin A0 y las luces como en los ejercicios anteriores del 2 al 11, el altavoz en el pin 13:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-8uamhbl6.png)

##### Solución

Después de poner pin digital alto o bajo, se puede añadir un pequeño retraso para hacer más lento el efecto de encender consecutivamente los leds.  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-3yszs4sb.png)

# Piano invisible con Ultrasonidos

Podemos conectar el sensor de ultrasonidos como queramos, en estos apuntes vamos a realizar el criterio de:

- Trigger en el pin 4
- Echo en el pin 3

La conexión sería así:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-nzsuddde.png)

la instrucción de mBlock sería la siguiente:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-3sz559ut.png)

## <span style="color: rgb(22, 145, 121);">**Con el altavoz PC**</span>

No vamos a hacer un arpa láser estilo Jean Michel Jarre, pero con ultrasonidos, se puede hacer algo parecido. ¿Te atreves? El programa tiene que convertir la distancia en notas musicales.

Las notas musicales están en formato americano (en vez de do-re-mi-..) van desde la nota 48 a la nota 72 por lo tanto hay que convertir la distancia en esas notas musicales *(pon la voz a tope, que se oye bajo)*

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--3" src="//www.youtube.com/embed/pfbXZOVQubA" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

- Ponemos un tope de 100 cm para que empiece a tocar, de lo contrario nos vuelve un poco locos, pues no pararía.
- Recomendamos utilizar la notación musical es americana, en forma de números, pues la conversión es muy fácil

Solución con mBlock5.0

Lo tienes aquí [https://planet.mblock.cc/project/3267795](https://planet.mblock.cc/project/3267795)

En el dispositivo ARDUINO

[![arduino-piano1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-piano1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-piano1.png)

En el objeto (que hemos cambiado el oso panda por un músico). Hemos añadido la extensión MUSICA

[![arduino-piano3.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-piano3.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-piano3.png)

Y tenemos ya una instrucción de tocar la nota en formato americano que es numérico

[![arduino-piano4.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-piano4.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-piano4.png)

El programa queda en el objeto :

[![arduino-piano2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-piano2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-piano2.png)

Solución con mBlock3.0  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-0mshd2vm.png)

## <span style="color: rgb(22, 145, 121);">**Con el altavoz Arduino**</span>

Bueno y ahora ¿por qué no repetimos el ejercicio anterior pero nos independizamos del ordenador? conectamos un altavoz en el pin 13 por ejemplo y que suene la música:

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-miymdlm9.png)

No suena de maravilla, porque no es el altavoz del PC, ni tampoco tiene potencia, pero algo es algo...

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--8" src="//www.youtube.com/embed/jgHBIZCJGu0" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

La solución es muy parecida al ejercicio anterior, simplemente hay que cambiar la instrucción de tocar nota por reproducir tono  
  
El programa queda así: (la captura es en mBlock3.0 pero en mBlock5.0 es igual)  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-om9ugjyl.png)

# Ampliación: Juegos de luces

##### <span style="color: rgb(22, 145, 121);">**Construcción**</span>

En este caso pondremos 8 LEDs uno a continuación del otro, los ANODOS (+)(pata más larga) conectados al pin 13 - 12 -11 -10 -9 -8 -7 -6 y los CATODOS (-) (pata corta) todos al GND

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-7rgepd96.png)

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-dnkkldkk.png)

### <span style="color: rgb(22, 145, 121); background-color: rgb(194, 224, 244);">**Juego luces - 1** </span>

Se van encendiendo y apagando los 8 leds secuencialmente como en el vídeo:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--13" src="//www.youtube.com/embed/Ov_jvJmqTX8" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

<span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">La captura está realizada en mBlock 3.0 pero en mBlock 5.0 es igual</span></span>

### ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-78t1f1n4.png)  
  
<span style="color: rgb(22, 145, 121); background-color: rgb(194, 224, 244);">**Juego de luces -2** </span>

En este caso da la sensación que es una luz la que se desplaza:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--14" src="//www.youtube.com/embed/rFRS73GW5Y0" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

<span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">La captura está realizada en mBlock 3.0 pero en mBlock 5.0 es igual</span></span>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-h82rdvqu.png)  
  
Se ha optado por utilizar una variable que controle el tiempo T por comodidad

### <span style="color: rgb(22, 145, 121); background-color: rgb(194, 224, 244);">**Coche fantástico** </span>

¿Conoces las luces del coche fantástico? si la respuesta es afirmativa, tienes la edad perfecta para este curso 😁 sino, tendrás que ver este vídeo para ver el coche fantástico

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--15" src="//www.youtube.com/embed/oNeQi8-PXAU" width="560"></iframe>

Al grano. Nuestro reto es que hagas es lo siguiente:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--16" src="//www.youtube.com/embed/B9odWhGeLnE" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

<span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">La captura está realizada en mBlock 3.0 pero en mBlock 5.0 es igual. </span></span>

Hemos puesto un tiempo T pequeño para que dar una sensación de movimiento.

###   
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-kjunvj1q.png)  
  
  
<span style="color: rgb(22, 145, 121); background-color: rgb(194, 224, 244);">**Coche fantástico plus** </span>

Bueno, y si pedimos que tenga alguna interacción con elementos de Scratch:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--17" src="//www.youtube.com/embed/23RnW9e2gD8" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

Con mBlock 5.0 la cosa se complica pues con mBlock 3 podemos intercambiar instrucciones de objeto con dispositivo pero aquí no, luego el programa lo tienes aquí [https://planet.mblock.cc/project/3267890](https://planet.mblock.cc/project/3267890)

El objeto oso panda es el que lleva la batuta de T y n

Estamos utilizando la técnica de VARIABLES GLOBALES de [https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock](https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/dos-formas-de-programar-con-mblock)

[![arduino-cochefantasticoplus1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-cochefantasticoplus1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-cochefantasticoplus1.png)

Cada objeto bombilla, tiene un programa, por ejemplo el objeto 6 es (la captura es de mBlock3 pero mBlock 5 es igual)  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-69mxm4nj.png)

El dispositivo ARDUINO tiene este programa

[![arduino-cochefantasticoplus2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-cochefantasticoplus2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-cochefantasticoplus2.png)

Hace un barrido y si es el pin que hay que encender, se enciende, sino se apaga

<p class="callout warning">Si T es menor de 0.5 empieza a descoordinarse el Arduino y los objetos del ordenador, pues hay retraso en la comunicación seria. Si queremos bajar tiempos, habría que trabajar con CARGA no en VIVO y habría que utililizar la técnica de BROADCAST</p>

En mBlock 3. El programa te lo puedes [descargar aquí](https://libros.catedu.es/attachments/16) y es como el anterior  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-kjunvj1q.png)

Pero con 8 objetos bombillas, con su programa correspondiente, por ejemplo el 6

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-69mxm4nj.png)

### <span style="color: rgb(22, 145, 121);">**Otra propuesta de coche fantástico**</span>

Esto lo mostramos como ejemplo de hacer el coche fantástico con un potenciómetro, OJO la solución está realizada en código, no en mBlock, pero los vídeos explican muy bien cómo hay que conectar todo:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--18" src="//www.youtube.com/embed/ucQRrE1j32g" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

<p class="callout success"><span style="color: rgb(0, 0, 0);">La solución está con capturas de mBlock3. A estas alturas ya sabes las modificaciones a realizar en mBlock5  
Si lo realizas en mBlock5 y lo publicas, please, pásanos el link y lo ponemos aquí</span></p>

  
  
<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/7CoMjsU0aI4" width="560"></iframe>

  
  
<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/HFzhEpXn6yA" width="560"></iframe>

  
  
<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/7VJ_nCiII6w" width="560"></iframe>

## **<span style="color: rgb(22, 145, 121);">Semáforo</span>**

Realizar un semáforo de luces para coches y peatones:

[Fuente: Con permiso del autor David López Morte (IES Los Albares)](https://davidlopezmorte.wordpress.com/)la propuesta del semáforo [aquí](http://www.ieslosalbares.es/tecnologia/programacionArduinoMBlock/semforo.html).

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-482s3etu.jpeg)

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-j6fqcis2.png)

##### Solución

<p class="callout success"><span style="color: rgb(0, 0, 0);">La solución está con capturas de mBlock3. A estas alturas ya sabes las modificaciones a realizar en mBlock5  
Si lo realizas en mBlock5 y lo publicas, please, pásanos el link y lo ponemos aquí  
</span></p>

  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-23m95t4q.jpeg)

### Propuesta 2 con código

##### Solución

<p class="callout success"><span style="color: rgb(0, 0, 0);">La solución está con capturas de mBlock3. A estas alturas ya sabes las modificaciones a realizar en mBlock5  
Si lo realizas en mBlock5 y lo publicas, please, pásanos el link y lo ponemos aquí  
</span></p>

  
<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/7F9hH7SGfyk" width="560"></iframe>

  
  
<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/_4ZOp9TZr6w" width="560"></iframe>

  
  
<iframe allowfullscreen="allowfullscreen" height="314" src="//www.youtube.com/embed/53Git9YiRvA" width="560"></iframe>

## <span style="color: rgb(22, 145, 121);">**Otras propuestas**</span>

Pues ahora que sean dos luces las que se muevan, los dos en sentidos opuestos:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--22" src="//www.youtube.com/embed/GOSBe0IfFQw" width="560"></iframe>

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

<p class="callout success"><span style="color: rgb(0, 0, 0);">La solución está con capturas de mBlock3. A estas alturas ya sabes las modificaciones a realizar en mBlock5  
Si lo realizas en mBlock5 y lo publicas, please, pásanos el link y lo ponemos aquí  
</span></p>

  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-0bo0uyfx.png)  
  
Puedes descargarte[ el programa aquí](https://libros.catedu.es/attachments/17).

# Ampliación: Sensor parking

# Con un led

Realizar un programa que la luz parpadee más deprisa cuanto más cerca esté el obstáculo.

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/D0yfR4AZoZY" width="560"></iframe>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-5a3lwg9j.png)

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

El truco está en el tiempo de espera en la intermitencia  
  
Si el tiempo de espera es proporcional a la distancia, parpadeara más cuanto más cerca.

La captura está en mBlock3.0 pero es igual en mBlock 5.0  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-0cz1stmm.png)

# Con altavoz Arduino

Realizar un programa que realice pulsos el altavoz en función de la distancia al objeto. Cuanto más cerca mayor es la frecuencia de los pulsos

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/6Ww-2lFD27M" width="560"></iframe>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-rgdvt4yu.png)

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

¡¡¡ Es exáctamente igual que el caso anterior !!! Sensor parking con led lo único es cambiar la luz POR UN ALTAVOZ !!!  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-in3ztdko.png)

# Con altavoz del PC

Ahora que no sea un altavoz suelto, sino el del ordenador

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--0" src="//www.youtube.com/embed/wcx3_KiDUpM" width="560"></iframe>

Si te fijas va más lento que el caso anterior por su dependencia con el ordenador.

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

<span style="color: rgb(22, 145, 121);">**Con mBlock 5.0**</span>

<span style="color: rgb(0, 0, 0);">Si la instrucción de ultrasonidos funcionase en vivo, se podría utilizar la técnica de variables globales y sería sencillo el programa, pero esta instrucción SOLO FUNCIONA EN CARGA luego utilizaremos la técnica BROADCAST de [https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/programacion-mblock](https://libros.catedu.es/books/programa-arduino-con-mblock-scratch/page/dos-formas-de-programar-con-mblock)</span>

<span style="color: rgb(0, 0, 0);"> [![instruccionultrasonidos.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/instruccionultrasonidos.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/instruccionultrasonidos.png)</span>

<span style="color: rgb(0, 0, 0);">Luego el programa lo tenemos aquí [https://planet.mblock.cc/project/3271155](https://planet.mblock.cc/project/3271155)</span>

<span style="color: rgb(0, 0, 0);">En el dispositivo ARDUINO</span>

<span style="color: rgb(0, 0, 0);">[![arduino-sensorparking1.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-sensorparking1.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-sensorparking1.png)</span>

<span style="color: rgb(0, 0, 0);">Y en el objeto tambor</span>

<span style="color: rgb(0, 0, 0);">[![arduino-sensorparking2.png](https://libros.catedu.es/uploads/images/gallery/2023-12/scaled-1680-/arduino-sensorparking2.png)](https://libros.catedu.es/uploads/images/gallery/2023-12/arduino-sensorparking2.png)</span>

<span style="color: rgb(22, 145, 121);">**Con mBlock3.0**</span>

##### ![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-1a1kfbcn.png)  
  
Si quieres este programa te lo puedes descargar [aquí](https://libros.catedu.es/attachments/18).  
  
  

# Con varios leds

Realizar un programa que visualice con las luces la distancia que detecta el sensor de ultrasonidos.

Cuanto más lejos, más luces encendidas:

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--1" src="//www.youtube.com/embed/2J9z2fWz6EY" width="560"></iframe>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-ycmzeiwx.png)

##### <span style="color: rgb(22, 145, 121);">**Solución**</span>

- una variable X que vaya desde 1 hasta 8
- si la distancia es menor que X que encienda la luz, en caso contrario que lo apague.
- Como los LEDs están conectados desde el pin 6 al 13 hay que realizar una sencilla conversión: pin= X + 5

La captura está en mBlock 3.0 pero en mBlock 5.0 es igual

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-psffqcgw.png)

# Muro

<iframe frameborder="0" src="https://padlet.com/embed/evk459q8z9xz" style="width: 100%; height: 608px; display: block; padding: 0; margin: 0;"></iframe>

<div id="bkmrk--0"><div>[![Hecho con Padlet](https://resources.padletcdn.com/assets/made_with_padlet.png)](https://padlet.com?ref=embed)</div></div>

# Créditos

- **2017** por Javier Quintana Peiró CATEDU.
- **2024** actualizado a mBlock 4.0 por Javier Quintana CATEDU

Cualquier observación o detección de error en [soporte.catedu.es](https://catedu.es/soporte-catedu/)

Los contenidos se distribuyen bajo licencia **Creative Commons** tipo **BY-NC-SA** excepto en los párrafos que se indique lo contrario.

[![image-1648462225402.gif](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648462225402.gif)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648462225402.gif)

[![image-1648462299882.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648462299882.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648462299882.png)

[![image-1648462361893.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648462361893.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648462361893.png)

# Lenguaje de programación

El Arduino se puede programar

- Por bloques (**mBlock** , Echidna, Scratch, SteamMakerblocks, Blocky....)
- Por código principalmente Arduino IDE

Guía de los lenguajes de programación para robots

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="569" src="https://docs.google.com/presentation/d/e/2PACX-1vQb1Dv9wN9QK-F6V7yvwDoyzquqwWlGvIyVJr83Yk56kAoYD7bXLnYDm_tCQkeAgg/pubembed?start=false&loop=false&delayms=3000" width="960"></iframe>

<p class="callout success">Tenemos un **grupo Telegram Robótica Educativa en Aragón**, [https://t.me/roboticaeducativaaragon](https://t.me/roboticaeducativaaragon)</p>

![](https://libros.catedu.es/uploads/images/gallery/2022-02/embedded-image-7qvnrzdh.jpeg)