# Echidna

En este curso pretende mostrarte el potencial educativo de esta placa  
Cómo utilizarlo, veremos que está adaptado a la programación en primaria o primeros cursos de secundaria con programación

# Programa arduino con Echidna

En este curso pretende mostrarte el potencial educativo de este sencillo escudo.

- **1.Cómo utilizarlo**, veremos que está adaptado a la programación en primaria o primeros cursos de secundaria con programación gráfica
- **2. Salidas** De forma fácil y sin electrónica ya podemos jugar
- **3. Entradas** El joystick, acelerómetro y el LDR son elementos motivadores para la programación y la imaginación.
- **4. Makey Makey** tienes dos placas en una. Se abre otra puerta a las capacidades de nuestros pequeños genios.
- **5. Extensiones** no nos quedamos cortos, podemos construir sencillos robots y proyectos con poco cableado.

Además utilizaremos DOS TIPOS DE ECHIDNAS

[![2024-11-27 19_37_38-Inicio - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-27-19-37-38-inicio-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-27-19-37-38-inicio-echidna-educacion.png)

Fuente Echidna.es

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

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

Fuente https://echidna.es/

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

# Hoja de Ruta

¿Dónde se encaja este robot? ¿Se puede comparar este robot con otros robots de otros cursos que hacemos desde CATEDU?

Esta es la hoja de ruta, no se tiene que tomar al pie de la letra, pero intenta ayudar al profesorado para que tenga una visión global de tanta oferta:

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)

# Lenguajes de programación

Echidna = Arduino se puede programar

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

En este curso vamos a tratar los lenguajes de programación :

- Echidna
- mBlock
- ArduinoIDE

<p class="callout warning"> **no tienes que saber todos, al menos uno**</p>

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)

# 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. Cómo utilizar Echidna

# ¿Cómo utilizar Echidna?

En este tema veremos:

- **SI UTILIZAS LA ECHIDNA SHIELD**
    - **antes hay que conocer el ARDUINO**
    - si utilizas la EchidnaBlack no hace falta, el Arduino esta integrado dentro de ella.
- **Qué programa** vamos a utilizar para programarlo
- **Comparativa** de otros robots y propuestas para enseñar el pensamiento computacional en nuestras clases.

<p class="callout danger">**Antes de nada comprueba que tu Echidna...**  
1-Tenga el **interruptor** hacia el lado de **SENSOR**   
(excepto cuando trabajes en modo Makey Makey que hay que ponerlo en MkyMky)  
2-El **volumen** ponlo **alto**, la flecha mirando a los leds  
3-El jumper conectado a 5V dejando libre el de Vin  
[![2025-04-30 19_49_03-Echidna Black - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-30-19-49-03-echidna-black-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-30-19-49-03-echidna-black-echidna-educacion.png)  
</p>

<p class="callout warning">**No veas el Echidna como una placa diferente al Arduino,** es simplemente un Arduino con los sensores y actuadores integrados. De echo puedes hacer los programas de este curso y los de IA perfectamente [CON ARDUINO y SIN ECHIDNA](https://libros.catedu.es/books/echidna/page/tengo-arduino-puedo-hacer-los-programas-sin-echidna) pero tienes que tener los sensores y actuadores correspondientes.   
*<span style="text-decoration: underline;">No puedes hacer los programas de Makey Makey</span>* pues eso lo tiene Echidna pero no Arduino</p>

Ver [https://libros.catedu.es/books/echidna/page/tengo-arduino-puedo-hacer-los-programas-sin-echidna](https://libros.catedu.es/books/echidna/page/tengo-arduino-puedo-hacer-los-programas-sin-echidna)

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

[![2024-11-27 19_37_38-Inicio - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-27-19-37-38-inicio-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-27-19-37-38-inicio-echidna-educacion.png)

Source: [https://echidna.es/](https://echidna.es/)

<p class="callout success">**¿Sabías que...?**  
Las placas Echidna son **Open Hardware** es decir, su diseño es abierto a mejoras, utilización... aquí tienes los planos https://echidna.es/hardware/echidnablack/documentacion-echidnablack/</p>

# Conocer el Arduino primero

<p class="callout info">Si tienes Echidna Shield es necesario utilizar el Arduino conectado al Echidna. Si tienes Echidna black, ya lo tienes integrado. En los dos casos recomendamos conocer el Arduino pues es el cerebro de la placa.</p>

#### <span style="color: rgb(22, 145, 121);">**Conocer el Arduino básico**</span>

Para manejar el Echidna no tienes que conocer en profundidad el Arduino <span style="text-decoration: underline;">**sólo tienes que saber**</span> :

- El corazón del Echidna Black es un **Arduino nano** integrado en la placa, y en Echidna Red no hay, se lo tienes que poner, es un escudo que se acopla a un **Arduino Uno**
    - **¿Para qué me sirve saber eso?**  Pues para saber que cualquier programa, actividad con Arduino lo puedes hacer con el Echidna

<p class="callout success">El Echidna no es más que un Arduino con unos sensores y actuadores para trabajar diréctamente sin necesidad de cableado</p>

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

<span style="color: rgb(0, 0, 0);">Si quieres saber más de esta placa, estos son los conocimientos avanzados, no necesarios para manejar Echidna de forma normal :</span>

{{@2936}}

# Hardware del Arduino

<p class="callout info">{{@7012#bkmrk-si-tienes-echidna-sh}}</p>

#### <span style="color: rgb(22, 145, 121);">**Hardware del Arduino básico**</span>

Para programar Echidna tienes que saber que Arduino tiene

- **14 Entradas y salidas digitales** que se llaman D0 a D13 
    - El D0 y el D1 es mejor no utilizarlas, pues lo utiliza el puerto USB para comunicarse con el ordenador, es decir, no se pueden utilizar a la vez teniendo el Arduino conectado al ordenador.
    - Las entradas y salidas digitales tiene sólo dos valores, (0v o 5V) que es lo mismo que (0 y 1 digitales), que es lo mismo que (LOW HIGH en inglés) o (BAJO y ALTO en castellano que sale en la programación en bloques)
- **5 Entradas analógicas** que se llaman A0 a A5 
    - Que leen valores desde 0 hasta 1024 **esto es importante**
    - **En EchidnaBlack** al tener un Arduino Nano tiene también 2 más A6 y A7

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

<span style="color: rgb(0, 0, 0);">Para manejar el Echidna de forma normal <span style="text-decoration: underline;">no es necesario saber con profundidad el Hardware del Arduino</span>, pero aquí van unos conocimientos avanzados por si te interesa:</span>

{{@2937}}

# Software del Arduino

<p class="callout success">Independientemente que tengas ECHIDNA SHIELD o ECHIDNA BLACK los dos se basan en Arduino, luego tienes que conocer qué programas hay para programar tu Echidna.</p>

Para programar Echidna de forma normal, tienes que saber:

- Arduino se puede programar de dos maneras 
    - **CON CÓDIGO**
    - **CON BLOQUES o GRÁFICO**
        - En vivo
        - Carga
        - Los dos
- Que en este curso utilizaremos BLOQUES o GRÁFICO y mostraremos dos opciones 
    - *<span style="background-color: rgb(251, 238, 184);">**Recomendado**</span>* Con **EchidnaScratch** que trabaja en vivo (te recomendamos leer **EN VIVO** está más abajo qué es eso.
    - Con **mBlock** que permite trabajar en vivo o carga

<p class="callout warning">Importante entender que para trabajar EN VIVO se necesita un **FIRMWARE** que veremos en el Echidna cual es, pero tranquilo que ya viene cargado de fábrica y seguramente no tienes que hacer nada.</p>

### <span style="color: #169179;">**Tipos de lenguajes**</span>

<span style="color: rgb(0, 0, 0);">Si quieres saber más detalles y posibilidades, aquí tienes unos conocimientos más avanzados</span>

{{@7552}}

# Sensores

### <span style="color: rgb(22, 145, 121);">**Sensores básico para Echidna**</span>

Para trabajar con Echidna sólo tienes que saber:

- Los sensores son **las entradas** de información a tus programas
- Echidna trabaja de dos modos 
    - En modo **sensor** entonces tienes a tu disposición : 
        - SENSORES ANALÓGICOS valores de 0 a 1024 
            - Sensor de luz
            - Joystick
            - Temperatura
            - Acelerómetro
            - Volumen
            - Micrófono (sólo EdhidnaBlack pues tiene A7 del Arduino Nano)
        - SENSORES DIGITALES 
            - Pulsadores D2 y D3
            - Pulsador del Joystick D2
    - En modo **MAKEY MAKEY**
        - 8 entradas 
            - 6 analógicas A0 al A5
            - 2 digitales D2 y D3

Además hay 3 conectores I/O que puedes poner sensores externos de otros tipos.

<p class="callout success">Recuerda que al programar EN VIVO tienes también las entradas del ordenador, por ejemplo el ratón, teclado...</p>

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

<span style="color: rgb(0, 0, 0);">Si quieres saber más sobre los sensores, que otros tipos hay (para conectar en I/O sensores externos), te recomendamos leer este apartado :</span>

{{@7009}}

# Actuadores y otras salidas

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

<span style="color: rgb(0, 0, 0);">Para manejar el Echidna tienes que saber:</span>

- <span style="color: rgb(0, 0, 0);">Los actuadores son **las salidas** de tus programas</span>
- <span style="color: rgb(0, 0, 0);">En Echidna tienes en modo SENSOR</span>
    - <span style="color: rgb(0, 0, 0);">Salidas Digitales</span>
        - <span style="color: rgb(0, 0, 0);">Audio o por el Zumbador o por el Jack</span>
        - <span style="color: rgb(0, 0, 0);">Leds rojo, amarillo y verde</span>
        - <span style="color: rgb(0, 0, 0);">Led RGB</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">No hay salidas analógicas y no hay salidas en modo Makey Makey</span></p>

<p class="callout success">Recuerda que al programar EN VIVO tienes también las salidas del ordenador: La pantalla (los objetos o sprites de tus programas), los altavoces...</p>

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

Para manejar Echidna no hace falta saber más, pero si quieres saber qué otros actuadores hay (para conectar en los I/O actuadores externos).

{{@11506}}

# ¿Qué es Echidna?

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

Es una Shield de Arduino diseñada para facilitar la programación del Arduino en los últimos cursos de primaria y primeros de secundaria, pensado en minimizar el cableado de la electrónica (ya lo sabemos pues es una Shield) y enfocado a nivel educativo y al lenguaje por símbolos   
*¿Por qué hemos elegido esta Shield?*  Porque tiene un buen equilibrio calidad/precio sencillez/potencial orientado a últimos cursos de primaria, primeros de secundaria.   
Es **OpenHardware**, por lo tanto es un proyecto con garantías de estabilidad, libre, colaborativo y vivo, con la misma filosofía que la placa Arduino.

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-epr5prmw.png) [Source: Web oficial Echidna- documentación](https://echidnashield.wordpress.com/hardware/documentacion/)

- <span style="background-color: rgb(191, 237, 210);"><span style="text-decoration: underline;">**Salidas o actuadores**</span>:</span>
    - Diodos LED **Red** D13, **Orange** D12 y **Green** D11.
    - Diodo de 3 colores **RGB** gobernados por D9, D5 y D6 respectivamente.
    - **Audio** en D10.
- <span style="text-decoration: underline; background-color: rgb(194, 224, 244);">**Entradas o sensores**:</span>
    - **Joystick** (estupendo para hacer proyectos atractivos) xy con A0 y A1
    - **Acelerómetro** (idem) xy 
        - Echidna red y black v1 en A2 y A3
        - Echidna black v2 va por I2C
    - Luz **LDR**
        - Echidna red y black v1 en A5
        - Echidna black v2 en A3
    - **Botones** digitales D2 y D3
    - **Temperatura** en A6 (Echidna black v1 y v2 )
    - **Micrófono** en A7 (Echidna black v1 y v2 )
- <span style="text-decoration: underline; background-color: rgb(251, 238, 184);">**8 entradas MakeyMakey**</span>: ¡Dos placas en una!: por lo tanto da más potencial a nuestros proyectos. 
    - A0, A1, A2, A3, A6, A7, D2, D3
- <span style="background-color: rgb(236, 202, 250);"><span style="text-decoration: underline;">**Conexión a periféricos**</span>:</span> elementos externos que se pueden conectar: 
    - **Bluetooth** que da más potencial a nuestros proyectos.
    - **I/O** pines para conexión de otros elementos 
        - A2 (solo en Echidna black v2)
        - D4, D7 y D8
        - Cerca de estos pines hay un selector de alimentación para decidir de dónde reciben energía 
            - posición **5V** si utilizas componentes que no superan los 300mA, como un servo pequeño.
            - posición **Vin** si quieres utilizar componentes que superan esa corriente, tienes que utilizar la alimentación externa del jack y poner el jumper en esa posición

[![2025-12-03 22_08_02-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/2025-12-03-22-08-02-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/2025-12-03-22-08-02-greenshot.png)  
*Fuente Echidna.es captura de Echidna black v2*

<p class="callout info">Te recomendamos visitar  
- [https://echidna.es/](https://echidna.es/)  
Twitter :  
- [https://x.com/EchidnaSTEAM?s=20](https://x.com/EchidnaSTEAM?s=20)</p>

**¿Estás preparado? adelante !!!**

# ¿Qué es Echidna Black?

{{@5868#bkmrk-es-una-shield-de-ard}}

<p class="callout info">Como puedes ver NO HAY CASI DIFERENCIAS DE ENTRADAS Y SALIDAS ENTRE UNA ECHIDNA SHIELD Y UNA ECHIDNA BLACK  
La diferencia es el cerebro, la placa microcontroladora:   
- En la **Echidna Shield** no lo tiene, le tienes que acoplar una placa <span style="text-decoration: underline;">Arduino UNO</span>   
- En el caso de **ECHIDNA BLACK** lo tiene integrado (exáctamente un <span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;">Arduino Nano </span></span><span style="color: rgb(0, 0, 0);">por lo tanto tiene A6 temperatura y A7 micrófono que la anterior no tiene</span>)</p>

<p class="callout warning">**DIFERENCIA**: La EchidnaBlack tiene dos entradas analógicas más que la Echidna Shield para tus programas:  
- A6 temperatura   
- A7 micrófono </p>

<p class="callout danger">EN EL CASO DE LA ECHIDNA BLACK NO ES PROPIAMENTE UNA SHIELD pues **NO NECESITA LA PLACA ARDUINO** ya la integra ella misma</p>

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

[![2024-11-27 19_55_26-echidna-black.jpg (1200×1600).png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-27-19-55-26-echidna-black-jpg-12001600.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-27-19-55-26-echidna-black-jpg-12001600.png)  
*Fuente Echidna.es*

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


[![2025-12-03 21_32_18-Greenshot.png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/2025-12-03-21-32-18-greenshot.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/2025-12-03-21-32-18-greenshot.png)  
*Fuente Echidna.es*

{{@5868#bkmrk-salidas-acertadas%3A-d}}

<p class="callout info">{{@5868#bkmrk-te-recomendamos-visi}}</p>

<div class="sketchfab-embed-wrapper" id="bkmrk-"><iframe allow="autoplay; fullscreen; xr-spatial-tracking" allowfullscreen="allowfullscreen" frameborder="0" src="https://sketchfab.com/models/3945a809630b4c0d905a1d5dd234ee91/embed" title="Echidna Black (modelo 3D GmedranoTIC)"> </iframe>

</div>[ Echidna Black (modelo 3D GmedranoTIC) ](https://sketchfab.com/3d-models/echidna-black-modelo-3d-gmedranotic-3945a809630b4c0d905a1d5dd234ee91?utm_medium=embed&utm_campaign=share-popup&utm_content=3945a809630b4c0d905a1d5dd234ee91) by [ GmedranoTIC ](https://sketchfab.com/gmedranotic?utm_medium=embed&utm_campaign=share-popup&utm_content=3945a809630b4c0d905a1d5dd234ee91) on [Sketchfab](https://sketchfab.com?utm_medium=embed&utm_campaign=share-popup&utm_content=3945a809630b4c0d905a1d5dd234ee91)

# Cómo se programan las Echidnas

<p class="callout info">Da igual si tienes una Echida Shield que una Echidna Black las dos se programan igual</p>

Tenemos dos opciones:

- Programación **mediante lenguajes gráficos, por bloques**: símbolos, gráficos… tipo [Scratch](https://scratch.mit.edu)
    - **Ventajas**: Mucho más sencillo e intuitivo, ideal para principiantes en programación como es nuestro caso entre primaria y secundaria.
    - **Inconvenientes**: No se llega a aprovechar todas las posibilidades del Arduino.
    - **Programas**: [EchidnaScratch](https://echidna.es/), [Snap4Arduino](http://snap4arduino.rocks), [mBlock](http://www.mblock.cc), [ArduinoBlocks,](http://www.arduinoblocks.com) [Bitbloq](http://bitbloq.bq.com), [S4A](http://s4a.cat)...
    - Dentro de los lenguajes gráficos hay tres tipos: 
        - Los que permiten **cargar** el programa y el método en **vivo** : [mBlock](http://www.mblock.cc),
        - Los que sólo permiten método en **vivo** : [EchidnaScratch](https://echidna.es/), [Snap4Arduino](http://snap4arduino.rocks)
        - Los que sólo permiten **cargar** el programa [ArduinoBlocks,](http://www.arduinoblocks.com) [Bitbloq](http://bitbloq.bq.com), [S4A](http://s4a.cat)...
- Programación mediante **código**: 
    - **Ventaja**: Se aprovecha todo el potencial de programación, puesto que se controla todas las variables
    - **Inconvenientes**: Como toda programación en código, tiene su dificultad y abstracción.
    - **Programas**: [ArduinoIDE](https://www.arduino.cc/en/Main/Software).

<p class="callout info">Si no sabes lo que significa en **vivo** o **cargar** es que no has leído [Software del Arduino](https://libros.catedu.es/books/echidna/page/software-del-arduino)</p>

Vamos a enseñarte **CUATRO formas** de hacer un mismo programa: **Un semáforo**

<p class="callout danger">**OJO** : Acuérdate en toda esta sección de poner la Echidna en modo Sensor   
**NO en modo MkyMky**</p>

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

# ATENCION NO CAMBIES DE PROGRAMA

Queremos que veas cuatro formas de programar el Echidna

- Gráfico con bloques 
    - <span style="background-color: rgb(191, 237, 210);">**EchidnaScratch** </span>(recomendado)
    - **<span style="background-color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255);">mBlock </span></span>**<span style="background-color: rgb(255, 255, 255);">(</span>avanzado)
    - **Snap4Ardiuno** (avanzado)
- Código 
    - **ArduinoIDE** (avanzado)

Vas a ver las cuatro formas con un mismo programa UN SEMAFORO

<p class="callout danger">No queremos que hagas los avanzados al menos que lo necesites en tus proyectos  
P: ¿Por qué?   
R: Por ejemplo: Si te pasas a **mBlock** te cargas el Firmata que necesita **EchidnaScratch**, y al revés si estas con **mBlock** y te pasas a **EchidnaScratch** te cargas el Firmware de mBlock,   
P: ¿Qué es eso?   
R: tranquilo luego lo verás  
Lo que queremos decirte es que si decides un método de programación **LUEGO ES DIFICIL PASAR A OTRO**</p>

<p class="callout info">**P: ¿Qué hago?  
R:**  Simplemente haz el que te recomendamos ECHIDNASCRATCH y tienes las otras tres formas por si necesitas cargar el programa (mBlock) o ya trabajas con Snap4arduino o estas en secundaria y quieres trabajar con Arduino IDE</p>

# MONTAJE 1 SEMAFORO con EchidnaScratch (recomendado)

<p class="callout info"><span style="color: rgb(0, 0, 0);">{{@5869#bkmrk-da-igual-si-tienes-u}}</span></p>

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

Entramos en [**echidna.es**](https://echidna.es/) y en A programar nos encontramos el enlace al programa ECHIDNASCRATCH que se descarga y se instala sin problemas en varios SO (Windows, Linux, IO..)

[![2024-11-27 20_01_47-Inicio - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-27-20-01-47-inicio-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-27-20-01-47-inicio-echidna-educacion.png)

Al ejecutarlo elegimos ECHIDNASCRATCH (dejamos de momento la IA que lo trataremos en un capítulo aparte)

[![2024-11-27 20_04_06-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-27-20-04-06-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-27-20-04-06-echidnaml.png)

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

<span style="color: rgb(0, 0, 0);">Creamos un objeto semáforo, (exactamente igual que con mBlock) con tres disfraces. </span><span style="color: rgb(0, 0, 0);">Nos vamos a **SPRITE** (quitamos el gato en EchidnaScratch o el oso panda en mBlock) y creamos el nuestro que será un simple semáforo  
</span><span style="color: rgb(0, 0, 0);">[![2024-11-28 08_50_09-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-28-08-50-09-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-28-08-50-09-mblock-block-based-ide-coding-for-beginners.png)</span>

<span style="color: rgb(0, 0, 0);">Como no existen semáforos, no pasa nada, creamos uno en **Paint**</span>

<span style="color: rgb(0, 0, 0);">[![2024-11-28 08_51_09-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-28-08-51-09-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-28-08-51-09-mblock-block-based-ide-coding-for-beginners.png)</span>

<span style="color: rgb(0, 0, 0);">Pintamos un semáforo, es muuuuy sencillo, le ponemos el nombre del SPRITE como SEMAFORO y los disfraces **COSTUME** el primero con el nombre ROJO</span>

<span style="color: rgb(0, 0, 0);">[![2024-11-28 08_52_42-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-28-08-52-42-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-28-08-52-42-mblock-block-based-ide-coding-for-beginners.png)</span>

<span style="color: rgb(0, 0, 0);">Vamos duplicando el disfraz y hacemos los correspondientes AMARILLO y VERDE</span>

<span style="color: rgb(0, 0, 0);">[![2024-11-28 23_03_42-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-28-23-03-42-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-28-23-03-42-mblock-block-based-ide-coding-for-beginners.png)</span>

<span style="color: rgb(0, 0, 0);">Es muy fácil :</span>

<span style="color: rgb(0, 0, 0);">[![2024-11-28 23_05_27-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-28-23-05-27-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-28-23-05-27-mblock-block-based-ide-coding-for-beginners.png)</span>

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

 el siguiente código (que es igual al del mBlock menos que EchinaScratch tiene unas instrucciones especiales que lo hacen más fácil )

[![2024-11-27 20_15_01-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-27-20-15-01-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-27-20-15-01-echidnaml.png)

<p class="callout info">Si se hace el programa el en mismo objeto semáforo, se puede hacer el programa <span style="text-decoration: underline;">sin la instrucción</span>**<span style="text-decoration: underline;"> </span>ENVIAR MENSAJE  
ESTA ES LA GRAN DIFERENCIA CON mBlock** PUES EN MBLOCK NO HAY INSTRUCCIONES ESPECIALES PARA ECHIDNA, POR LO QUE HAY QUE CREAR UN OBJETO ARDUINO O UN OBJETO ECHIDNA COMO VEREMOS MÁS ADELANTE  
  
Con Echidna Scratch NO HACE FALTA todo se hace en la misma ventana y objeto</p>

[![2024-11-27 23_43_58-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-27-23-43-58-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-27-23-43-58-echidnaml.png)

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

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

# MONTAJE 1 SEMÁFORO con mBlock (avanzado y optativo)

{{@2986}}

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

Es importante seguir el orden de los pasos:

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

##### <span style="color: rgb(22, 145, 121);">**MONTAJE 1 SEMÁFORO Y ECHIDNA USANDO DEVICE ARDUINO**</span>

En este caso ponemos de Device un objeto ARDUINO- UNO

[![2024-11-29 08_11_54-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-29-08-11-54-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-29-08-11-54-mblock-v5-4-3.png)  
Ponemos este programa con la Echidna y en mBlock hemos cambiado el disfraz del oso panda por tres círculos con tres disfraces, y el programa del objeto semáforo es

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

El programa en el **objeto Arduino** es el siguente

 [![echidna-semaforo-1.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-semaforo-1.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-semaforo-1.png)

Todo el proyecto esta en [https://planet.mblock.cc/project/3228189](https://planet.mblock.cc/project/3228189)

Y este es el resultado: [Video](https://www.youtube.com/watch?v=84Hm0tx5bMo&;feature=youtu.be)

Nota, esta realizado con mBlock3.0 que no era necesario enviar mensajes entre objetos y el arduino

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

<p class="callout warning">P: TENGO EL ECHIDNA BLACK y e en Devices veo que existe <span style="color: #000000;">¿Puedo añadirlo y así utilizar instrucciones propias de Echidna?  
R: Buena idea, pero nosotros lo hemos probado y **no nos funciona en modo vivo** por lo que NO lo recomendamos.  
</span><span style="color: rgb(0, 0, 0);">[![2024-11-28 08_48_36-mBlock Block-Based IDE- Coding for Beginners.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-28-08-48-36-mblock-block-based-ide-coding-for-beginners.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-28-08-48-36-mblock-block-based-ide-coding-for-beginners.png)</span></p>

# MONTAJE 1 SEMÁFORO con Snap4Arduino (avanzado y optativo)

### PRIMERO QUÉ ES SNAP4ARDUINO

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

Es también un programa gráfico basado en Scratch, multiplataforma, libre y abierto y permite muchas versiones de placa, bibliotecas, etc… Es la evolución del [S4A](http://s4a.cat)

Usa el firmware standard [Firmata](http://firmata.org). ¿Y qué es un firmware ? Es un programa que se graba y se ejecuta en una placa hardware. En el caso del firmware Firmata, hay que instalarlo en el Arduino para que se comunique con Snap4Arduino. (en mBlock también hay un firmware pero está contenido en el propio mBlock y se instala cuando le damos a Conectar-Actualizar Firmware)

Si todo esto del firmware no lo entiendes del todo, no pasa nada, son los pasos que se explican en apartado de la configuración. No es necesario para programar, pero si lo entiendes, mejor.

El programa se puede descargar de su web [http://snap4arduino.rocks/](http://snap4arduino.rocks)

En principio es la aplicación más acorde con la filosofía de la Shield Echidna.

### SEGUNDO LA CONFIGURACIÓN DE SNAP4ARDUINO

En esta presentación se enseña COMO CONFIGURAR SNAP4ARDUINO para que se comunique con nuestro Arduino y la Echidna

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

### TERCERO EL EJEMPLO SEMÁFORO CON ECHIDNA

El programa es el mismo que el anterior, con los mismos disfraces y se puede abrir desde Snap4Arduino desde [esta URL](http://snap4arduino.rocks/run/#present:Username=javierquintana&ProjectName=SEMAFORO)

El resultado es [este vídeo](https://youtu.be/Ziuze9mRkys)

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

# MONTAJE 1 SEMÁFORO mediante código (avanzado y optativo)

## MONTAJE 1 SEMÁFORO MEDIANTE CÓDIGO

### PRIMERO QUÉ ES "MEDIANTE CODIGO"

Es la forma de trabajar de forma profesional el Arduino: con su lenguaje código, en realidad, los otros lenguajes traducen el programa gráfico en lenguaje código Arduino, es decir son meros intermediarios.

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

El programa se puede descargar de su web oficial, aunque también hay una versión online [https://www.arduino.cc/](https://www.arduino.cc/)

### SEGUNDO LA CONFIGURACIÓN

Aquí no hay que instalar ningún Firmware, pues el código, o sea tú programa, es el mismo “firmware”. Digamos que no necesitas intermediarios si tratas con el agricultor ;)

### TERCERO EL EJEMPLO SEMÁFORO CON CÓDIGO

Aquí es donde vemos que la programación no es apropiada para Primaria, y la explicación de cada línea necesitaría un curso entero, como [éste](https://libros.catedu.es/books/programa-arduino-mediante-codigo), pero si eres un poco *pito* seguro que eres capaz de leerlo intuitivamente sin problemas.

```C++
/* Semáforo Arduino
  Leds conectados a pines 11,12,13 = EchidnaShield */
int verde = 11;
int amarillo = 12;
int rojo = 13;

void setup()
{
 pinMode(verde, OUTPUT);
 pinMode(amarillo, OUTPUT);
 pinMode(rojo, OUTPUT);
 Serial.begin(9600); //inicializa la comunicación Serial
}

void loop()
{
 Serial.println("Semaforo - Inicio"); //Escribe el texto 
 digitalWrite(verde, HIGH);
 Serial.println("Semaforo - Verde"); //Escribe el texto
 delay(2000);
 digitalWrite(verde, LOW);
 digitalWrite(amarillo, HIGH);
 Serial.println("Semaforo - Amarillo"); //Escribe texto
 delay(1000);
 digitalWrite(amarillo, LOW);
 digitalWrite(rojo, HIGH);
 Serial.println("Semaforo - Rojo"); //Escribe el texto
 delay(2000);
 digitalWrite(rojo, LOW);
}
```

Este programa se escribe (o copia y pega ¡es un texto !!) en el software del Arduino y se carga en la placa, en[ el vídeo](https://youtu.be/S8dQdCqOtto) se ve muy bien:

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

### Desventaja

En este programa queremos que te fijes en una **desventaja**: La interacción con el ordenador se pierde frente a mBlock y Snap4Arduino:

- En los lenguajes gráficos, tenemos a **interacción con el ordenador** igual que en Scratch: si te fijas en la pantalla el dibujo del semáforo va cambiando de disfraz para representar los colores de la luz que se enciende a la vez que en el Arduino.
- En un programa grabado en el Arduino **perdemos esa interacción**, lo máximo que podemos visualizar es una ventana donde se representa en formato texto qué es lo que le está pasando al Arduino (en el ejemplo del semáforo sale "Semáforo - Verde, Semáforo- Rojo ….").

Esto lo vemos como una **desventaja** desde el punto de vista de la enseñanza de la programación pues perdemos el potencial de interactuar con los elementos del ordenador crear personajes, disfraces, sonidos, teclado…, es decir **el sprite** (el oso panda que aparece por defecto en mBlock, la flecha que aparece por defecto en Snap4Arduino o el que nosotros creamos, como este ejemplo el dibujo del semáforo).

### Ventaja

Pero… (siempre hay un “pero” para estropear la fiesta) la programación en código tiene una **ventaja**: Se graba en el Arduino, no hay ningún intermediario entre nuestro programa y el Arduino (en mBlock y Snap está el ordenador), quien manda en el Arduino es nuestro programa, no nuestro ordenador, esto se traduce en: **rapidez !**, en mBlock veremos que podemos grabar nuestro programa en Arduino, pero perdemos la interacción con el sprite, como lo veremos más adelante.

### Conclusión

Profesionalmente es mejor utilizar lenguaje con código pero en la enseñanza es mejor el lenguaje gráfico. Lo hemos visto en el [apartado ¿Cómo se programa Echidna?](https://libros.catedu.es/books/arduino-con-echidna-y-mblock-scratch/page/12-como-se-programa-echidna-shield). Es una Shield Educativa, y lo lógico es utilizar un lenguaje adaptado al nivel educativo: Gráfico. Pero … ¿cual?

# ¿Qué lenguaje gráfico es mejor para Echidna?

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

- ➕ Es un programa específico para Echidna, tiene ya **instrucciones especiales**  
    [![2024-11-27 23_50_54-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-27-23-50-54-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-27-23-50-54-echidnaml.png)  
    Esto es **UNA ENORME VENTAJA** pues permite que el sprite interactúa con Echidna **sin necesidad de usar mensajes y variables globale**s como en mBlock
- **➕ EchidnaScratch** es un programa que permite usar la placa **EN VIVO** esto nos permite interactuar con el ordenador
- ➖ **No** permite **CARGA** es decir, dependemos del ordenador, no podemos cargar el programa en el Echidna y que trabaje independientemente de PC.
- ➕ EchidnaScratch esta integrado con la **INTELIGENCIA ARTIFICIAL** LearningML
- ➕ La detección Makey Makey de los pines lo detecta igual que mBlock

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

- ➕ Es un programa muy extendido multiplaca-
- ➕ Permite programar **EN VIVO** igual que EchidnaScratch
- ➕ Pero también permite **CARGAR EL PROGRAMA** EN LA PLACA **lo que permite crear proyectos independientes del ordenador**
- ➖ EchidnaBlack o Echidna Shield lo lee como si fuera un **Arduino UNO**
- ➖ Para la comunicación entre el Device Arduino = Echidna y los diferentes Sprites del programa hay que usar **MENSAJES o VARIABLES GLOBALES**lo que hace <span style="text-decoration: underline;">engorroso </span>cualquier programa
- ➖ También permite la IA pero con extensiones, ver [https://libros.catedu.es/books/robotica-educativa-con-mbot/page/cognitive-services-servicios-cognitivos](https://libros.catedu.es/books/robotica-educativa-con-mbot/page/cognitive-services-servicios-cognitivos) pero no está tan integrado como EchidnaScratch
- ➕ Detecta bien los pines Makey Makey

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

- ➕ También es un programa que permite usar EchidnaScratch **en vivo**
- ➕ Tiene **instrucciones especiales** para la placa
- ➖ No es tan amigable como los anteriores.

##### <span style="color: rgb(22, 145, 121);">**¿ POR CUAL NOS DECANTAMOS ?**</span>

- <p class="callout success"><span style="color: rgb(22, 145, 121);"><span style="color: rgb(0, 0, 0);">Si vas a trabajar en modo gráfico programas con o sin Makey Makey **ECHIDNASCRATCH**</span></span></p>
- <p class="callout success"><span style="color: rgb(0, 0, 0);">Si vas a trabajar con IA **ECHIDNASCRATCH**</span></p>
- <p class="callout success"><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255);">Si vas a trabajar con proyectos que no quieres que se ejecuten con el PC </span>**mBlock**</p>
- 

<p class="callout info"><span style="color: rgb(0, 0, 0);">**EN RESUMEN**, al menos que te interese trabajar con proyectos donde quieres CARGAR el programa en la placa, **RECOMENDAMOS ECHIDNA SCRATCH**</span></p>

- <p class="callout danger"><span style="color: rgb(0, 0, 0);">**OJO si pasas de MBLOCK a ECHIDNASCRATCH hay que cargar Firmata** ver [https://libros.catedu.es/books/echidna/page/echidnascratch-no-detecta-echidna](https://libros.catedu.es/books/echidna/page/por-si-te-pasa-problema-echidnascratch-no-detecta-echidna-instalar-firmata)</span></p>
- <p class="callout danger">**<span style="color: rgb(0, 0, 0);">OJO si pasas de ECHIDNASCRATCH a MBLOCK hay que cargar el Firmware de mBlock ver [https://libros.catedu.es/books/echidna/page/mblock-no-detecta-echidna](https://libros.catedu.es/books/echidna/page/mblock-no-detecta-echidna)</span><span style="color: rgb(0, 0, 0);">  
    </span>**</p>
- <p class="callout danger">**<span style="color: rgb(0, 0, 0);">Por lo tanto es mejor no ir cambiando de programa</span>**</p>

<p class="callout warning">**<span style="color: rgb(0, 0, 0);">P: Por defecto cuando lo compro ¿Qué tiene cargado? ¿Firmata para usarlo con EchinaScratch o Firmware para usarlo con mBlock?  
  
</span>**<span style="color: rgb(0, 0, 0);">R: Firmata para usarlo con EchinaScratch</span></p>

##### <span style="background-color: rgb(255, 255, 255); color: rgb(22, 145, 121);">**Otros programas gráficos**</span>

Existen otros programas gráficos, el ArduinoBlocks, Bitblock… pero no tienen la posibilidad de interaccionar con Sprites del ordenador, ni tienen el mismo entorno del referente Scratch, por lo que no se utilizarán en este curso, pero son posibilidades interesantes, os mostramos dos capturas de pantalla del mismo programa semáforo visto anteriormente, fíjate que aquí no hay *Sprite*:

Con Bitbloq:

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

Con ArduinoBlocks:

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

Y un favorito nuestro el **VISUALINO** pues a la vez que haces programación gráfica, va enseñando el código a la derecha:

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

# Por si te pasa, PROBLEMA: EchidnaScratch no detecta Echidna: Instalar Firmata

<p class="callout warning">Esto es debido a que si por ejemplo has utilizado mBlock, ArduinoIDE, etc... se ha cargado dentro del Arduino del Echidna *(Echidna Shield o Echidna Black da igual)* el software de estos programas y por lo tanto se han cargado el **FIRMATA** que es el software necesario para que se comunique nuestro ECHIDNA *(Echidna Shield o Echidna Black da igual)* con nuestro programa ECHIDNASHIELD. Ver al final ¿Qué es eso de **Firmata**)</p>

[![2024-12-03 08_19_41-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-08-19-41-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-08-19-41-echidnaml.png)

### <span style="color: rgb(22, 145, 121);">**¿Cómo puedo restaurar el FIRMATA en el Arduino?**</span>  


Necesitamos el programa ARDUINO IDE para instalarlo, vamos a arduino.cc [https://www.arduino.cc/en/software](https://www.arduino.cc/en/software) descargamos e instalamos el programa:

[![2024-12-03 08_23_11-Software _ Arduino.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-08-23-11-software-arduino.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-08-23-11-software-arduino.png)

**Descargamos**, **instalamos** (dando aceptar a todos los controladores que pide permiso, marcando que es de confianza, etc.. ) y **ejecutamos**, Y elegimos la placa y el puerto

[![2024-12-03 08_25_05-Edit Page Draft _ Librería CATEDU.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-08-25-05-edit-page-draft-libreria-catedu.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-08-25-05-edit-page-draft-libreria-catedu.png)

##### <span style="color: rgb(22, 145, 121);">**¿QUÉ PLACA - BOARD TENGO QUE ELEGIR?** </span>

- <p class="callout warning">Si tenemos **ECHIDNA SHIELD** vamos a herramientas y seleccionamos placa\_ **ARDUINO UNO** </p>
- <p class="callout warning">Si tenemos **ECHIDNA BLACK** vamos a herramientas y seleccionamos placa **ARDUINO NANO**</p>

##### <span style="color: rgb(22, 145, 121);">**¿Y EL PUERTO?**</span>

Tienes que elegir el puerto COMX (donde X es un número) que está conectado nuestra placa. Si tienes dudas, **desconecta** la placa, ejecuta ArduinoIDE y mira los puertos, repite la operación, pero con la placa **conectada** y el nuevo COM ese es.

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

Nos vamos a herramientas - administrar librerías

[![2024-12-03 08_27_19-.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-08-27-19.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-08-27-19.png)

Y buscamos librería FIRMATA aquí vemos que ya está instalada, si no la tienes instalada, dale a Install :

[![2024-12-03 08_28_01-sketch_dec3a _ Arduino IDE 2.3.3.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-08-28-01-sketch-dec3a-arduino-ide-2-3-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-08-28-01-sketch-dec3a-arduino-ide-2-3-3.png)

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

Nos vamos a Archivo - Ejemplos - Firmata y cargar el ejemplo **STANDARDFIRMATA**

[![2024-12-03 08_29_04-.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-08-29-04.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-08-29-04.png)

Lo cargamos en la placa dándole a la flecha (tarda algo pues primero lo compila)

[![2024-12-03 08_30_42-StandardFirmata _ Arduino IDE 2.3.3.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-08-30-42-standardfirmata-arduino-ide-2-3-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-08-30-42-standardfirmata-arduino-ide-2-3-3.png)

Lo carga, saldrá un mensaje de ok, y ya está **NUESTRA ECHINASCRATCH YA PUEDE LEER LA PLACA ECDHINA**

[![2024-12-03 08_31_30-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-08-31-30-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-08-31-30-echidnaml.png)

<p class="callout success">Si aun así, NO LO DETECTA... cambiar de USB 😁 funciona !!</p>

Un resumen lo tienes aquí [https://echidna.es/a-programar/instalar-standardfirmata/](https://echidna.es/a-programar/instalar-standardfirmata/)

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

> **Firmata** es un **protocolo** para **comunicar** **microcontroladores** con la **computadora** de una manera sencilla. Permite que se ejecute un programa en EchidnaLM o Snap4Arduino y que este se comunique con la placa microcontroladora mediante el puerto serie.  
> Fuente [https://echidna.es/a-programar/instalar-standardfirmata/](https://echidna.es/a-programar/instalar-standardfirmata/)

[![StandarFirmata-Echidna-Scratch.jpg](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/standarfirmata-echidna-scratch.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-12/standarfirmata-echidna-scratch.jpg)  
Fuente [https://echidna.es/a-programar/instalar-standardfirmata/](https://echidna.es/a-programar/instalar-standardfirmata/)

# Por si te pasa, PROBLEMA: mBlock no detecta Echidna: Instalar Firmware mBlock

<p class="callout danger">Esto ocurre siempre que pasemos de EchidnaScratch a mBlock</p>

Hay que actualizar el firmware, mira :

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

# Por si te pasa, PROBLEMA: El Sistema operativo no detecta Echidna

 Tal y como dice en [https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/](https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/)

> Para que Echidna Black se pueda comunicar con nuestro PC es necesario que nuestro sistema operativo (SO) le dé permiso de acceso al puerto serie (USB) y que tenga el driver del controlador de comunicación (CH430) instalado.

[![Ch340-200x208.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/ch340-200x208.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/ch340-200x208.png)  
Fuente CC-BY-SA [https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/](https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/)

<p class="callout warning"><span style="color: rgb(0, 0, 0);">**Por si acaso, descarta lo evidente**  
OJO con el cable, pues hay cables de USB que sólo son de carga (+baratos) y otros que son de carga+datos (los que hay que utilizar)</span></p>

##### <span style="color: rgb(22, 145, 121);">**Recomendamos en el caso de problemas: INSTALAR ARDUINO IDE**</span>

- Para instalar Arduino nos debemos [descargar el IDE](https://www.arduino.cc/en/software) de la página oficial:
- En la guía [Getting Started](https://www.arduino.cc/en/Guide) tenemos indicaciones sobre como instalar Arduino según nuestro sistema operativo.

Fuente [https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/](https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/)

##### <span style="color: rgb(22, 145, 121);">**Si los problemas insisten, instalar el Driver**</span>

> – **Driver de comunicación:**
> 
> Echidna Black utiliza el chip CH430E, por lo que dependiendo del SO necesitarás instalar el controlador “[Driver CH341](http://www.wch-ic.com/search?q=CH340&t=downloads)”
> 
> - GNU Linux: En caso de que seas usuario Linux, no debería ser necesario instalar el driver. Si necesitas el [driver para GNU Linux](http://www.wch-ic.com/downloads/file/177.html).
> - MAC: Aquí tienes acceso al [driver para MAC](http://www.wch-ic.com/downloads/file/178.html).
> - Windows: Aquí tienes acceso al driver para Windows. [https://www.arduined.eu/ch340-windows-10-driver-download/](https://www.arduined.eu/ch340-windows-10-driver-download/)
> - Android: Aquí tienes acceso al [driver para Android](http://www.wch-ic.com/downloads/file/195.html).
> 
> – **Permiso de acceso al puerto serie:**
> 
> Dependiendo del SO es necesario dar o no permisos de acceso al puerto serie. Si ya has instalado el IDE de Arduino, estos permisos deberían estar ya dados.
> 
> - GNU Linux: Si no no tuvieras acceso al puerto serie puede que tengas que darle permiso desde una terminal usando el comando: *sudo usermod -a -G dialout «usuario».*
> - MAC: por defecto ya tenemos acceso al puerto serie.
> - Windows: por defecto ya tenemos acceso al puerto serie

# Alimentación del Echidna

<span style="color: rgb(22, 145, 121);">**[![AlimentacionBlack.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/alimentacionblack.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/alimentacionblack.png)** <span style="color: rgb(0, 0, 0);">CC-BY-SA Fuente: https://echidna.es/</span></span>

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

El **EchidnaShield** se alimenta a través de la alimentación USB del Arduino, ya sea cuando está conectado con el ordenador, o cuando se utiliza un PowerBank

<details id="bkmrk-aqu%C3%AD-vemos-un-ejempl"><summary>Aquí vemos un ejemplo de un echidna que está alimentado con un PowerBank y esta ejecutando un programa ¿Cómo puede ser eso?</summary>

Porque se ha cargado el programa en en Arduino del Echidna. Esto lo puede hacer programas como mBlock ver software

</details>![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-4mbpdbny.jpeg)

En el **EchidnaBlack** tiene integrado el puerto usb para alimentarlo

- Echidna Black v1 es USB-microB
- Echidna Black v2 es USB-C

[![2025-12-03 22_22_03-Presentación1 - PowerPoint.png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/2025-12-03-22-22-03-presentacion1-powerpoint.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/2025-12-03-22-22-03-presentacion1-powerpoint.png)

[![2024-11-29 08_49_40-Inicio - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2024-11/scaled-1680-/2024-11-29-08-49-40-inicio-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2024-11/2024-11-29-08-49-40-inicio-echidna-educacion.png)

<p class="callout warning">**OJO** El jumper que tiene arriba a la izquierda tenerlo conectado a 5V:</p>

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

**No utilizar la alimentación 5V cuando los [servos o dispositivos](https://libros.catedu.es/books/arduino-con-echidna-y-mblock-scratch/chapter/5-extensiones "5. Extensiones") a controlar consuman más de 300mA**, para no sobrepasar el regulador del Arduino, en este caso utilizar la alimentación externa:

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

<p class="callout warning">**P: ¿Cuándo usar alimentación externa obligatoriamente?**   
R: Cuando se utilicen servos o dispositivos conectados al I/O **que consumas +300mA**. Ver [https://echidna.es/hardware/echidnablack/alimentacion-echidnablack/](https://echidna.es/hardware/echidnablack/alimentacion-echidnablack/)</p>

Arduino conectado a la **EchidnaShield** o la misma **EchidnaBlack** se puede alimentar con un portapilas o fuente de alimentación, sin ningún problema, con un rango desde 9V hasta 12V.

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

Pero hay que decirle al Echidna que la alimentación no es por 5V sino por **Vin**, pues el Arduino también se alimenta por Vin, esto se hace cambiando el jumper:

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

[![2024-12-16 13_33_22-Alimentación EchidnaBlack - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-16-13-33-22-alimentacion-echidnablack-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-16-13-33-22-alimentacion-echidnablack-echidna-educacion.png)CC-BY-SA fuente https://echidna.es/hardware/echidnablack/alimentacion-echidnablack/

<p class="callout info">**Nota**: Es posible que en ocasiones nos interese utilizar **las dos alimentaciones a la vez**, por ejemplo queremos usar el Arduino dependiendo del ordenador, porque queremos por ejemplo que interactue con el *Sprite por ejemplo el gato de Edhidna Scratch* (por lo tanto está conectado al cable USB) pero *las extensiones que queremos conectar necesitan potencia* (más de 300mA) por lo tanto conectamos también un portapilas o fuente de alimentación, así pues estamos obligados de decirle al Echidna que alimente las extensiones por Vin cambiando el jumper a Vin.</p>

# Tengo Arduino ¿Puedo hacer los programas SIN ECHIDNA ?

<p class="callout warning">{{@5867#bkmrk-no-veas-el-echidna-c}}</p>

La respuesta es : **SI** (si tienes también los sensores y actuadores correspondiente) PERO **NO** LOS DE MAKEY MAKEY

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

Muy fácil, tienes que poner los sensores y actuadores en los mismos pines que indica la Echidna para poder usar sus mismo software y programas

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

#### <span style="color: rgb(22, 145, 121);">**¿No tengo que instalar ningún firmware al Arduino?**</span>

Si, por supuesto, igual que en Echidna

- Si vas a utilizar **Echidna Scratch** (<span style="background-color: rgb(251, 238, 184);">recomendable </span>y además tiene IA) tienes que instalar el **Firmata** [ver como](https://libros.catedu.es/books/echidna/page/por-si-te-pasa-problema-echidnascratch-no-detecta-echidna-instalar-firmata)
- Si vas a utilizar **mBlock** tienes que instalar su firmware[ ver como](https://libros.catedu.es/books/echidna/page/por-si-te-pasa-problema-mblock-no-detecta-echidna-instalar-firmware-mblock)
- Si tienes problemas de conexión, tu sistema operativo no detecta el Arduino, pues se soluciona igual que el Echidna pues el Echidna es un Arduino con sensores y actuadores integrados. [Ver cómo solucionarlo](https://libros.catedu.es/books/echidna/page/por-si-te-pasa-problema-el-sistema-operativo-no-detecta-echidna)

#### <span style="color: rgb(22, 145, 121);">**Vale... hazme un ejemplo de programa normal**</span>

Ok, pues el mismo ejemplo que hemos visto [en el semáforo](https://libros.catedu.es/books/echidna/page/montaje-1-semaforo-con-echidnascratch-recomendado) pero SIN ECHIDNA

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

- Un Arduino UNO que le hemos instalado el Firmata [de esta manera ](https://libros.catedu.es/books/echidna/page/por-si-te-pasa-problema-echidnascratch-no-detecta-echidna-instalar-firmata)
- Cables Dupond M-M
- Placa protoboard para las conexiones
- Tres leds Rojo, Amarillo y verde conectados igual que en la placa echidna, es decir, si te fijas en la figura de arriba: 
    - Rojo al D13
    - Amarillo al D12
    - Verde al D11

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

Pues igual que en [https://libros.catedu.es/books/echidna/page/montaje-1-semaforo-con-echidnascratch-recomendado](https://libros.catedu.es/books/echidna/page/montaje-1-semaforo-con-echidnascratch-recomendado)

##### **<span style="color: rgb(22, 145, 121);">No me lo creo, a ver...</span>**

Mira

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/0Bn_MCCtf40" title="MONTAJE 1 SEMAFORO ECHIDNA SCRATCH PERO SIN ECHIDNA" width="458"></iframe>

#### <span style="color: rgb(22, 145, 121);">**Vaaaale.... ¿Y con Inteligencia Artificial?**</span>

Entrenamos un modelo de IA como el visto aquí [https://libros.catedu.es/books/echidna/page/montaje-14-reconocimiento-de-imagenes](https://libros.catedu.es/books/echidna/page/montaje-14-reconocimiento-de-imagenes)

[![2024-12-08 09_50_29-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-09-50-29-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-09-50-29-echidnaml.png)

y con ese modelo creamos un programa que :

- Si detecta **móvil** que se encienda **rojo**
- Si detecta **gafas** que se encienda **naranja**
- Si detecta **taza** que se encienda **verde**
- Ninguno en caso de que no detecte nada

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

Igual, igual igual que antes tres leds, verde al D11 amarillo al D12 y el rojo al D13

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

Igual que antes pero con el modelo IA creado

[![2025-01-24 11_55_51-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-24-11-55-51-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-24-11-55-51-echidnaml.png)  
[![2025-01-24 11_56_23-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-24-11-56-23-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-24-11-56-23-echidnaml.png)  
[![2025-01-24 11_56_45-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-24-11-56-45-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-24-11-56-45-echidnaml.png)

##### <span style="color: rgb(22, 145, 121);">**El resultado** </span>  
<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/FlLx9LxMQfQ" title="SEMAFORO CON IA ECHIDNA SCRATCH" width="458"></iframe>

# 2. Salidas de Echidna

# Acuérdate de poner en modo Sensor

Nota: Acuérdate en toda esta sección de poner la Echidna en modo Sensor, es decir Echidna no trabaja en modo MkyMky

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

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

# MONTAJE 2 Luces psicodélicas

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

Ya hemos visto las luces LED con el [semáforo](https://libros.catedu.es/books/echidna/page/12-como-se-programa-echidna-shield), ahora vamos a ver el **LED RGB**  
![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-vmsce80d.png)  
Está conectado a las salidas digitales D5, D6 y D9 y si te fijas, en el Arduino tienen el símbolo ~ ¿Qué significa esto? Que son señales PWM. Si has leído [¿Qué es un Arduino?](https://libros.catedu.es/books/echidna/page/11-que-es-echidnashield) habrás leído que es una señal digital pero los pulsos pueden variar su ancho de tal manera que la media puede ser una tensión entre 0 y 5V, que se gobiernan con esta instrucción:

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

Donde 0 sería 0V y el valor 255 sería el valor máximo de tensión que en nuestro caso es 5V aunque puede ser otra tensión si se alimenta Arduino con una alimentación externa Vin.

##### <span style="color: rgb(22, 145, 121);">**PROPUESTA MONTAJE 2 LUCES PSICODÉLICAS**</span>

<p class="callout info">Vamos a realizar un programa con Scratch que se iluminen todas las luces de colores de forma aleatoria, además vamos a poner un fondo, un personaje y música para que parezca una discoteca.</p>

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

Borramos el Sprite del gato y el fondo blanco, y añadimos un Sprite y fondo más acorde al enunciado, en la captura hemos elegido el Sprite predefinido **Cassy Dance** y fondo **Spotlight**

[![2024-12-03 10_39_32-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-10-39-32-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-10-39-32-echidnaml.png)

Vamos a crear un bloque que encienda las luces RGB al azar, además de las otras

[![2024-12-03 10_47_50-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/ytc2024-12-03-10-47-50-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/ytc2024-12-03-10-47-50-echidnaml.png)

El bloque tendría este aspecto

1. El bloque rojo es la cabecera del bloque AZAR-LUCES
2. La instrucción encender RGB con intensidades para cada color, un número aleatorio entre 0 y 255
3. Encender la luz roja al azar 
    1. Si la variable aleatoria 0-1 es un 1 enciende, sino apaga
4. Idem para la naranja
5. Idem para la verde

[![2024-12-03 10_47_06-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-10-47-06-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-10-47-06-echidnaml.png)

falta pues el programa principal que llama al bloque anterior, espera 500ms y pasa al siguiente disfraz del sprite y fondo

[![2024-12-03 10_54_50-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-10-54-50-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-10-54-50-echidnaml.png)

También en paralelo que suene la música **dancearround**

El resultado

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

<span style="color: rgb(0, 0, 0);">Lo tienes en MONTAJE2-LUCESPSICODELICAS.sb3 dentro del repositorio [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)</span>

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

Programa para el objeto y para el fondo  
  
[![echidna-disco1.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-disco1.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-disco1.png)[![echidna-disco2.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-disco2.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-disco2.png)

Y para el Arduino

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

El programa entero está en el siguiente enlace :[ https://planet.mblock.cc/project/3228239](https://planet.mblock.cc/project/3228239)

El resultado es el siguiente vídeo, está realizado con mBlock3 pero es el mismo efecto:

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

# MONTAJE 3 Timbre

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

<p class="callout info">Queremos que hagas un programa en el Echidna que si se pulsa SL que suene el buzzer y si pulso SL que suene un tono</p>

<p class="callout warning">**Ojo, sube el volumen**, girando el potenciómetro hacia la derecha  
Lo puedes oir o por el buzzer o por el jack de audio  
[![2025-07-02 07_27_00-Echidna Black - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-02-07-27-00-echidna-black-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-02-07-27-00-echidna-black-echidna-educacion.png)  
</p>

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

<span style="color: rgb(22, 145, 121);">**[![2024-12-03 19_33_07-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-19-33-07-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-19-33-07-echidnaml.png)**</span>

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

El programa lo tienes en el repositorio [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

Esta es la equivalencia entre notas y la nomenclatura Midi :

<table border="1" id="bkmrk-nota-midi-a-la-b-si-" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 50%;"></col><col style="width: 50%;"></col></colgroup><thead><tr><td>**NOTA**</td><td>**MIDI**</td></tr></thead><tbody><tr><td>A</td><td>LA</td></tr><tr><td>B</td><td>SI</td></tr><tr><td>C</td><td>DO</td></tr><tr><td>D</td><td>RE</td></tr><tr><td>E</td><td>MI</td></tr><tr><td>F</td><td>FA</td></tr><tr><td>G</td><td>SOL</td></tr></tbody></table>

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


Con mBlock no tiene instrucciones específicas para Echidna luego inventaremos un poco los tonos

- Cuando se pulsa D2 suene una onda cuadrada de 282Hz o sea una duración 0.035 segundos (0.0175seg el bajo y 0.0175seg el alto).
- Si se pulsa el botón D3 que suene el tono C4 que es aproximadamente esa frecuencia.

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

El programa lo tienes aquí [https://planet.mblock.cc/project/3228713](https://planet.mblock.cc/project/3228713)

<p class="callout warning">OJO no se puede hacer "en vivo" hay que cargarlo en el ordenador. La instrucción toca nota no permite utilizar Arduino en vivo</p>

<p class="callout danger">OJO sube el volumen del potenciómetro</p>

El resultado es este vídeo:

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

Si pulsamos D2 el sonido **es más agudo** que pulsando D3 que corresponde a la nota C4 ¿Por qué? Porque la señal es cuadrada.

---

---

---

<span style="color: rgb(22, 145, 121);">**BrainFad = pedo mental**</span>

Bueno una explicación más rigurosa de por qué la señal es más aguda con señales cuadras es lo siguiente:

Los cálculos del tiempo de subida y bajada tiempo=0.00175s calculados anteriormente están bien hechos ¿por qué no reproduce bien el tono de la nota C4? por esto:

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

No es lo mismo una onda analógica sinusoidal de 282 Hz que una onda digital cuadrada que es lo que se reproduce en la salida digital D10  
  
¿Y por qué se oye más agudo? Vamos a fijarnos en una transición por ejemplo la de bajada de 5V a 0V ¿A qué se parece más esa transición?

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

Evidentemente a la segunda, y esa pendiente tan vertical corresponde más a ondas agudas:

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

Por lo tanto se oye más agudo, por eso es.  
  
Ya sé que el anterior razonamiento, si lo lee algún físico, le producirá un rechinar de dientes, así que para ellos la explicación formal es que una onda cuadrada, según la transformada de Fourier, reproduce armónicos de orden superior, incluso infinitos si fuese perfecta.  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-jd0cbl6a.png)  
[via GIPHY](https://giphy.com)

# 3. Entradas de Echidna

# Otra vez acuérdate

Aquí es donde vamos a sacar todo el jugo a esta Shield.

<p class="callout info">**Nota**: Si has hecho el anterior programa Grabar a Arduino, recuerda dejarlo preparado para que haga caso a mBlock: Conectar-Actualizar Firmware.</p>

Nota: Acuérdate en toda esta sección de poner la Echidna en modo Sensor

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

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

# MONTAJE 4 ENCENDIDOAPAGADO

El anterior programa ya es un ejemplo de uso de estos botones digitales que están conectados a los pines digitales 2 y 3 de Arduino. Ten en cuenta que *sólo* pueden leer niveles lógicos.

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

Al pulsar el botón D2 se enciende los 3 leds del Echidna y al soltarlo se apagan. El programa también tiene que tener un efecto en un sprite

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

Cambiamos el sprite del gato por otro más acorde y cambiamos el disfraz, no lo desarrollamos aquí pues vimos cómo se hace con el MONTAJE1

[![2024-12-03 13_31_41-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-13-31-41-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-13-31-41-echidnaml.png)

El código :

[![2024-12-03 13_38_56-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-13-38-56-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-13-38-56-echidnaml.png)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="634" src="https://www.youtube.com/embed/9pn_a5v6PA4" title="echidna black" width="356"></iframe>

El fichero lo tienes en el Github : [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

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

Elegimos un objeto que cambie el disfraz, y le ponemos el código

[![echidna-d2-encendido-apagado1.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-d2-encendido-apagado1.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-d2-encendido-apagado1.png)  
Y al arduino:

[![echidna-d2-encendido-apagado2.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-d2-encendido-apagado2.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-d2-encendido-apagado2.png)  
El programa lo tienes aquí [https://planet.mblock.cc/project/3228733](https://planet.mblock.cc/project/3228733)

# MONTAJE 4-ENCENDIDOAPAGADO-AVANZADO

##### <span style="color: rgb(22, 145, 121);">**MONTAJE4-ENCENDIDOAPAGADO-AVANZADO**</span>

Al pulsar D2 tiene que encenderse los leds, y **sólo se apagaran** si se vuelve a pulsar D2. O sea, utilizar sólo un pulsador para encender y apagar los leds.

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

En este caso creamos una variable **ENCENDIDO** que registra si están los leds y el sprite encendidos o no

El código es

[![2024-12-03 13_56_27-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-13-56-27-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-13-56-27-echidnaml.png)

Para evitar que el programa sea engorroso, se ha creado los bloques ENCENDER y APAGAR, pero perfectamente se puede meter estas instrucciones dentro del algoritmo principal y pasar de bloques.

<p class="callout warning">**FIJATE 👁️👁️** que la variable ENCENDIDO se cambia a 1 o a 0 para que refleje el estado en el que ha quedado el sistema</p>

<p class="callout warning">**FIJATE** 😎 que hay una espera de 0.5segundos para que en ese tiempo **no lea** si no lo pones, esta todo el rato cambiando los pocos milisegundos que pulsas el botón  
Una manera de quitar ese efecto es poner un "Esperar que NO este pulsado" mira:  
[![2025-11-28 14_38_16-Manual EchidnaBlack y EchidnaML - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-28-14-38-16-manual-echidnablack-y-echidnaml-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-28-14-38-16-manual-echidnablack-y-echidnaml-pdf-xchange-viewer.png)  
Manual EchidnaBlack<sup>2</sup> y EchidnaML [www.echidna.es](https://www.echidna.es) CC-BY-SA</p>

[![2024-12-03 13_58_18-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-13-58-18-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-13-58-18-echidnaml.png)

[![2024-12-03 13_58_49-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-13-58-49-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-13-58-49-echidnaml.png)

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

El programa lo tienes en : [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

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

##### *[![echidna-d2-encendido-apagado3.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-d2-encendido-apagado3.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-d2-encendido-apagado3.png)*

El objeto que cambia el disfraz es igual que en RETO1

El programa lo tienes aquí [https://planet.mblock.cc/project/3228741](https://planet.mblock.cc/project/3228741)

<p class="callout info">***UNA CURIOSIDAD*** Fíjate como hay un retraso de 0.5 segundos para que "te de tiempo de apartar el dedo del pulsador" en caso contrario, volvería al otro estado. Si no sabes lo que quiero decir, quita la instrucciones "Espera 0.5 segundos" y verás qué pasa.</p>

<p class="callout success">***UN POCO DE PARÉNTESIS TEÓRICO*** Fíjate en el enunciado del RETO1: “al pulsar el botón D2 se enciende y al soltarlo se apaga” ES UNA MÁQUINA LÓGICA pues el estado de la máquina sólo depende de las entradas (en este caso de un botón): Pulsar la entrada (botón D2) produce una salida concreta (encender leds).</p>

<p class="callout success">*CONTINUAMOS ...*  
  
Pero tal y como está redactado, el RETO2 tiene que memorizar el estado anterior, no es trivial el enunciado “Al pulsar D2 tiene que encenderse los leds, y sólo se apagaran si se vuelve a pulsar D2.” ES UNA MÁQUINA SECUENCIAL pues el estado de la máquina depende de las entradas y de lo que ha pasado antes. Pulsar la entrada (botón D2) NO produce una salida concreta (depende si estaba apagado o encendido anteriormente).  
  
No pasa nada si no lo entiendes del todo, es teoría.  
  
La programación se complica **necesitamos añadir una variable que recuerde lo que ha pasado antes**  la vamos a llamar \_encendido \_que recordará si está encendido los leds o no:  
  
Muchos de nuestros aparatos electrónicos se encienden y se apagan con el mismo botón, así que a partir de ahora aprecia que su funcionamiento no es trivial.  
  
</p>

# MONTAJE 5 LDR

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

Vamos a la Wikipedia:

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

> [Fotorresistor ](https://es.wikipedia.org/wiki/Fotorresistor)*Una fotorresistencia es un componente electrónico cuya resistencia disminuye con el aumento de intensidad de luz incidente. Puede también ser llamado fotorresistor, fotoconductor, célula fotoeléctrica o resistor dependiente de la luz, cuyas siglas, LDR, se originan de su nombre en inglés light-dependent resistor. Su cuerpo está formado por una célula fotorreceptora y dos patillas.* ![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-emnrxno0.png)[More at Wikipedia (ES)](https://es.wikipedia.org/wiki/Fotorresistor)

Lo verás en el Echidna arriba un poco a la derecha, y está conectado a la entrada analógica del Arduino A5 y según [https://echidna.es/](https://echidna.es/) los valores van desde 20 en ausencia de luz, hasta 1.000 con mucha luz.

#### <span style="color: rgb(22, 145, 121);">**Comprobar los límites**</span>

No os creáis al pie de la letra los límites oficiales del LDR! Los componentes electrónicos no son ideales, cada uno es particular, probar esos límites en vuestro Echidna

[![2024-12-03 19_55_23-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-03-19-55-23-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-03-19-55-23-echidnaml.png)

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

Jugar un poco con vuestras condiciones de luz, y definir unos valores de oscuridad, poca luz, media luz y mucha luz, en mi caso mis valores son

- Oscuridad menor 200
- Poca luz entre 200 y 500
- Media luz entre 500 y 800
- Mucha luz mayor 800

Con estos valores vamos a realizar un programa que

- Oscuridad: Ningún led encendido
- Poca luz Luz roja
- Media luz Luz naranja
- Mucha luz Luz verde

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

<p class="callout info">**RETO** Vamos a reutilizar esfuerzos: reutilizar el semáforo visto pero vamos a hacer que se iluminen los colores según la luz:</p>

<table id="bkmrk-sem%C3%A1foro-luz-todo-ap"><thead><tr><th>Semáforo</th><th>Luz</th></tr></thead><tbody><tr><td>Todo apagado</td><td>Mucha oscuridad</td></tr><tr><td>Rojo</td><td>Oscuridad</td></tr><tr><td>Amarillo</td><td>Luz normal</td></tr><tr><td>Verde</td><td>Mucha luz</td></tr></tbody></table>

Según nuestros valores experimentales, (puedes poner otros según las condiciones de luz de tu aula)

<table id="bkmrk-sem%C3%A1foro-luz-l%C3%ADmite-"><thead><tr><th>Semáforo</th><th>Luz</th><th>Límite inferior</th><th>Límite superior</th></tr></thead><tbody><tr><td>Todo apagado</td><td>Mucha oscuridad</td><td>---</td><td>199</td></tr><tr><td>Rojo</td><td>Oscuridad</td><td>200</td><td>499</td></tr><tr><td>Amarillo</td><td>Luz normal</td><td>500</td><td>799</td></tr><tr><td>Verde</td><td>Mucha luz</td><td>800</td><td>---</td></tr></tbody></table>

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

[![2024-12-05 09_43_50-Presentación1 - PowerPoint.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-09-43-50-presentacion1-powerpoint.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-09-43-50-presentacion1-powerpoint.png)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="634" src="https://www.youtube.com/embed/5JJY39A2Fm8" title="montaje5 echidna ldr" width="356"></iframe>

Lo puedes encontrar en en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

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

<p class="callout info">Haz un sprite tipo semáforo que también se enciendan las luces igual que el Echidna real, tal y como hicimos en MONTAJE1 SEMAFORO y encima que diga los valores</p>

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

El resultado lo puedes ver en [este vídeo](https://www.youtube.com/watch?v%3DMX558VKV_pE):

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


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

Con mBlock al no tener instrucciones específicas para Echidna, para leer en directo los valores del LDR, hay que utilizar nuestro mBlock y que nuestro simpático oso panda nos diga esos valores, con este sencillo programa en el decice dispositivo **Arduino**:[![echidna-medirluz1.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-medirluz1.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-medirluz1.png)

<p class="callout warning">DONDE **LUZ** ES UNA VARIABLE GLOBAL QUE LO LEEN TODOS LOS OBJETOS luego ahora el panda con este programa puede decirnos cuánta luz hay</p>

[![echidna-medirluz3.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-medirluz3.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-medirluz3.png)[![echidna-medirluz2.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-medirluz2.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-medirluz2.png)

El valor que leemos con máxima luz (utilizando una linterna) y el valor de máxima oscuridad (a tapar con el dedo, no te compliques) no llegan a los límites que se marcan oficiales en [Echidna ](http://echidna.es/)EN TU CASO PUEDEN SER OTROS !! pero parecidos.

El programa lo tienes aquí [https://planet.mblock.cc/project/3228782](https://planet.mblock.cc/project/3228782)

#### **Programa mBlock**

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

El programa lo tienes aquí [https://planet.mblock.cc/project/3228793](https://planet.mblock.cc/project/3228793)

# MONTAJE 5 SEMAFORO SONIDO

No vamos a dejar sin poder experimentar este sensor que mide la intensidad del sonido y como está conectado a la salida analógica A7 sus valores van desde el 0 al 1024

<p class="callout info">Vamos a hacer un semáforo que mida la intensidad del sonido, verde si es poco, y sube hasta rojo cuando es elevado</p>

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

El programa en EchidnaScratch es :

[![2024-12-08 13_37_26-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-13-37-26-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-13-37-26-echidnaml.png)

Hemos simulado el sonido soplando en el micro :

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/bi17ruyNxSg" title="8 de diciembre de 2024" width="337"></iframe>

<p class="callout info">¿Te gustaría este semáforo pero que se ejecute **de manera independiente** (sin necesidad de ordenador), para usarlo en el aula, comedor...? Pues claro, cargando el programa, pero no con Echidna Scratch sino con código, ver en el punto 8 semaforo sonido</p>

<p class="callout success">**¿Te atreves a ...?**  
Realizar un programa que haga lo mismo pero con la temperatura (los valores límites de encendido y apagado de las luces dependen de la temperatura de trabajo)</p>

# MONTAJE 6 Piano luminoso

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

<p class="callout info">*Realizar un programa que suene una nota diferente según la luz*</p>

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

En echidna no podemos dar las notas numéricas (en mBlock sí) tenemos que utilizar la notación midi a b c d e f g luego simplemente según un nivel de luz que toque una de esas notas

[![2024-12-05 12_29_44-Presentación1 - PowerPoint.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-12-29-44-presentacion1-powerpoint.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-12-29-44-presentacion1-powerpoint.png)

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

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

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

En el Arduino el programa es

[![ECHIDNA-PIANOLUZ1.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-pianoluz1.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-pianoluz1.png)

En el objeto, el panda es

[![ECHIDNA-PIANOLUZ2.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-pianoluz2.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-pianoluz2.png)

<p class="callout warning">Nota: se ha incorporado una música con un tono, el C Elec Piano</p>

El programa lo tienes aquí

[https://planet.mblock.cc/project/projectshare/3228812](https://planet.mblock.cc/project/projectshare/3228812)

##### <span style="background-color: rgb(22, 145, 121);">**Con mBlock versión 3 ATENCIÓN ESTA VERSIÓN ES OBSOLETA NO RECOMENDADO sólo para PCs muy viejos**</span>

En esta versión no es tan sencillo ¿por qué? Porque hay cambios de escala: el LDR nuestro trabaja con valores distintos al de las notas, por lo tanto hay que hacer UN CAMBIO DE ESCALA, y esto necesita un apartado diferente, te recomendamos ver *[3.2.3.1 Cambios de escala](#bkmrk-3.2.3.1-cambios-de-e)*

##### Solución

  
El programa es pues el siguiente  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-pc7ndklq.png)  
  
¿por qué lo hacemos con la opción de subir a Arduino? Porque la simulación va lenta (se oye tut-tut-tut) si lo subes al Arduino reproduce el tono correctamente. [VER COMO SUBIR AL ARDUINO](https://libros.catedu.es/books/echidna/page/124-mblock-vs-snap4arduino-cual-es-el-mejor#bkmrk-1.2.4.7-importante-s).

El resultado lo puedes ver en [este vídeo](https://www.youtube.com/watch?v=b7SSXn4q8WM):

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

##### 3.2.3.1 Cambios de escala

Nos encontramos que:

- Los valores de entrada, es decir, el LDR trabaja con unos límites, que según hemos visto en [el apartado comprobar los límites](#3-2-1-comprobar-los-l-mites), el nuestro va de 108 a 982, llamaremos a esta **variable de entrada X**
- Los valores de salida son los tonos,que mBlock trabaja con la norma americana (la europea es el típico Do-Re-Mi-Fa-Sol) y los americanos, son valores numéricos que van desde 48 hasta 72 (lo puedes comprobar con la instrucción “tocar nota” que está en Programas-Sonido). Llamaremos a la **variable salida de notas Y**:

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

Problema: ¿cómo convertimos X en Y?

Matemáticamente es una recta con una pendiente m y una ordenada n :

Y = m\*X + n

Para calcular m y n tenemos que utilizar un sistema de ecuaciones dadas las condiciones límites de X e Y:

- Cuando X = 108 quiero que Y valga 48: 48=m\*108 + n
- Cuando X = 982 quiero que Y valga 72: 72=m\*982 + n

Ala! dos ecuaciones y dos incógnitas: calcula m y n

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

Buen ejercicio para los alumnos para que vean matemáticas aplicadas

No obstante, como esto lo repetiremos muchas veces los cambios de escala, hemos confeccionado [ESTA HOJA DE CÁLCULO](https://docs.google.com/spreadsheets/d/e/2PACX-1vTyASTvUIs_xsZ8c4RZOJ1sEstk4Cc6d--_Drne_U0o1_CXhgzxQkvZ4ZNYGLdKa2lrhLHDKmAwsKnK/pub?output%3Dxlsx) que te lo puedes descargar y facilita las cosas: Ponemos en las celdas amarillas los valores límites :

- X1= 108 X2=982
- Y1=48 Y2=72

Y nos da los valores m y n automáticamente:

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

Luego la fórmula para el cálculo de la Y (las notas) en función de la luminosidad X es:

Y = 0.027 \* X + 45

# MONTAJE 7 Telesketch

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

Son dos potenciómetros, uno en el eje X y otro en el eje Y además de un pulsador digital cuando se pulsa hacia dentro.

El potenciómetro X está conectado en los pines A0 del Arduino y el del eje Y al A1 por lo tanto si has leído los capítulos de ARDUINO **sus valores varía desde 100 hasta 1024.** El pulsador está conectado al D10.

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

<p class="callout info"><span style="color: rgb(22, 145, 121);">**<span style="color: rgb(0, 0, 0);">LAS COSAS CLARAS: IGUAL DA ESTA INSTRUCCIÓN</span>**  
[![2025-04-30 19_54_37-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-30-19-54-37-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-30-19-54-37-echidnaml.png)  
**<span style="color: rgb(0, 0, 0);">QUE ESTA: ( poniendo A0) </span>  
[![2025-11-22 23_41_08-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-22-23-41-08-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-22-23-41-08-echidnaml.png)  
<span style="color: rgb(0, 0, 0);">Preferimos la primera pues EchidnaML se adapta a la versión de la placa</span>**<span style="color: rgb(0, 0, 0);"> *es decir, que si en el futuro el joystick x en una versión furura es por ejemplo A5 la instrucción primera se adapta y lo envía a la A5 siendo transparente al alumnado, mientras que en la segunda tienes que saber que ha cambiado a A5*</span>  
</span></p>

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

<span style="color: rgb(0, 0, 0);">Si no sabes lo que es esto, no has tenido infancia 😊😁</span>

**[![TELSKET.jpg](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/telsket.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-12/telsket.jpg)**

<p class="callout info">Vamos a realizar el mismo ejemplo que [este vídeo de Jorge Lobo](https://youtu.be/Hx5DjQw7e_U) pero en vez de realizado en Snap4Arduino lo vamos a hacer en EchidnaScratch y en mBlock.</p>

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

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

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

Simplemente vamos a considerar estas condiciones:

- <p class="callout success">*Si el joystick en el **eje X** es menor que **300** es que estás inclinando el Joystick hacia la izquierda, luego el Sprite tiene que modificar su variable **decrementando** su valor, un valor fijo que lo definiremos como PASO*</p>
- <p class="callout success">*Si el joystick en el **eje X** es mayor que **700** es seguro que estás inclinando el Joystick hacia la derecha luego hay que **incrementar** el valor de la ordenada X el valor predefinido PASO*</p>
- <p class="callout success">*Idem para el **eje Y***</p>
- <p class="callout success">***PASO** es una variable que de momento lo vamos a poner como 3, si es menor, va más preciso pero más lento, si es mayor es más rápido pero el dibujo es menos preciso.*</p>
- <p class="callout success">*Los botones SR y SL nos servirán para subir y bajar el lápiz y borrar*</p>

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

Lápiz es una extensión para poder dibujar. Para instalar una extensión pulsa aquí

[![2024-12-05 15_49_35-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-15-49-35-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-15-49-35-echidnaml.png)

E instalamos esta extensión

[![2024-12-05 15_50_03-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-15-50-03-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-15-50-03-echidnaml.png)

Y se instalan nuevas instrucciones para dibujar

[![2024-12-05 15_51_36-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-15-51-36-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-15-51-36-echidnaml.png)

##### **<span style="color: rgb(22, 145, 121);">Código con EchidnaScratch</span>**

<span style="color: rgb(0, 0, 0);">Recomendamos cambiar el sprite del gato por otro más apropiado, por ejemplo el lápiz y bajarlo a un tamaño 15</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-05 15_54_22-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-15-54-22-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-15-54-22-echidnaml.png)</span>

<span style="color: rgb(0, 0, 0);">El programa :</span>

- <span style="color: rgb(0, 0, 0);">Inicia las variables que hemos explicado</span>
- <span style="color: rgb(0, 0, 0);">En el bucle, las condicionales hacen que se incremente o decremente las variables X e Y la cantidad definida PASO</span>
- <span style="color: rgb(0, 0, 0);">El botón SR </span>
    - <span style="color: rgb(0, 0, 0);">si se pulsa, pinta</span>
    - <span style="color: rgb(0, 0, 0);">si se suelta no pinta</span>
- <span style="color: rgb(0, 0, 0);">El botón SL borra todo</span>
- <span style="color: rgb(0, 0, 0);">Mover el sprite según las coordenadas X e Y</span>

[![2025-04-30 20_06_40-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-04/scaled-1680-/2025-04-30-20-06-40-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-04/2025-04-30-20-06-40-echidnaml.png)

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

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

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

En mBlock no hay instrucciones especiales para Echidna, hay que hablar pues de A0 para el eje X y A1 para el eje Y por lo tanto las nuevas condiciones son:

<p class="callout success">*Si A0 es menor que 300 es que estás inclinando el Joystick hacia la izquierda, luego el Sprite tiene que modificar su variable x hacia la derecha, es decir decrementando su valor  
![](https://libros.catedu.es/images/image86.png)*[![image-1648727378013.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648727378013.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648727378013.png)  
Si A0 es mayor que 700 es seguro que estás inclinando el Joystick hacia la derecha luego hay que incrementar el valor de la ordenada X  
![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-6kzsd3fc.png)  
Para los valores del eje Y es igual, cambiando A0 por A1  
</p>

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

Primero pondremo un objeto lápiz y añadiremos la extensión LAPIZ esto se entiende mejor con un vídeo

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/xft-6Nz3yzE" width="560"></iframe>

Pero no hagas la programación de hacer el cuadrado. Sino este

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

Donde BAJAR, SUBIR Y BORRAR SON MENSAJES y X e Y son variables globales a todos los objetos. En el arduino el programa será

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

El programa te lo puedes descargar aqui [https://planet.mblock.cc/project/3228849](https://planet.mblock.cc/project/3228849)

**VA MUY LENTO** El resultado lo puedes ver en [este vídeo](https://www.youtube.com/watch?v%3DJzyd5cPb2-Y):

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

Por curiosidad puedes ver el mismo programa en **Snap4Arduino** en este vídeo:

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

Puedes ver que es mucho **más rápido** que mBlock.

# MONTAJE 7 BIS MATA ALIENS con JOYSTICK

Esta vez no vamos a ser originales, vamos a ser un poco vagos y nos vamos a copiar el programa de otra persona. La [web de Scratch](https://scratch.mit.edu/) tiene un repositorio de millones de proyectos, podemos seleccionar uno, y adaptarlo a nuestra simpática Echidna.

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

<p class="callout info">Vamos a copiar un proyecto ALIENS INVASION nave espacial con nuestro JOYSTICK de la Echidna.</p>

##### <span style="color: rgb(22, 145, 121);">**1.- IMPORTANDO PROYECTO EXTERNO SCRATCH A EchidnaScratch o mBlock**</span>

Entramos en SCRATCH [https://scratch.mit.edu/](https://scratch.mit.edu/) y buscamos ALIEN INVASION, concretamente este : [https://scratch.mit.edu/projects/29744/](https://scratch.mit.edu/projects/29744/)

[![2025-11-22 23_13_30-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-22-23-13-30-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-22-23-13-30-echidnaml.png)

Entramos en **SEE INSIDE**

[![2025-07-01 20_39_34-Aliens invasion on Scratch.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-39-34-aliens-invasion-on-scratch.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-39-34-aliens-invasion-on-scratch.png)

Lo grabamos en nuestro ordenador

[![2025-07-01 20_40_59-Aliens invasion on Scratch.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-40-59-aliens-invasion-on-scratch.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-40-59-aliens-invasion-on-scratch.png)

Nos vamos al programa ECHIDNA ML y cargamos el programa descargado

[![2025-07-01 20_42_13-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-42-13-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-42-13-echidnaml.png)

##### <span style="color: rgb(22, 145, 121);">**2.- Hackear el código para que funcione la nave con el joystick**</span>

<span style="color: rgb(0, 0, 0);">Vamos a fijarnos en el código de la nave, si nos fijamos se mueve según la posición X del ratón, **vamos a cambiar ese código**</span>

<span style="color: rgb(0, 0, 0);">**[![2025-11-22 23_19_05-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-22-23-19-05-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-22-23-19-05-echidnaml.png)**</span>

<span style="color: rgb(0, 0, 0);">**Creamos** dos variables :</span>

- <span style="color: rgb(0, 0, 0);">Una que se llame **X** que tendrá la posición X de la nave, la inicializamos a 0 al principio y así se coloca la nave enmedio al empezar la partida</span>
- <span style="color: rgb(0, 0, 0);">Otra que se llame **PASO** que fija el paso o incremento cuando se mueva, cuanto más alto, más rápido se mueve, pero menos preciso, a golpes, cuanto más bajo, más lento pero más preciso, lo pondremos a 2</span>

<span style="color: rgb(0, 0, 0);">Y cambiamos el código de mover la nave :</span>

<span style="color: rgb(0, 0, 0);">[![2025-11-22 23_27_17-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-22-23-27-17-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-22-23-27-17-echidnaml.png)</span>

- <span style="color: rgb(0, 0, 0);">Si el joystick en el sentido X **baja** de 200 (puede ser un número entre 0-512 pues 512 en teoría es enmedio) pues que X se **decremente** un PASO</span>
- <span style="color: rgb(0, 0, 0);">Si el joystick en el sentido X **sube** de 600 (puede ser un número entre 512-1021 pues 1024 es el máximo) pues que X se **incremente** un PASO</span>

##### <span style="color: rgb(45, 194, 107);">**3.- QUE DISPARE APRETANDO EL BOTÓN SL**</span>

<span style="color: rgb(0, 0, 0);">Si nos fijamos, dispara si pulsamos la tecla **espacio**, lo quitamos y ponemos todo ese código dentro del código nuevo que se ejecuta si apretamos el botón SL</span>

<span style="color: rgb(0, 0, 0);">[![2025-11-22 23_31_09-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-22-23-31-09-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-22-23-31-09-echidnaml.png)</span>

<span style="color: rgb(0, 0, 0);">Queda pues</span>

<span style="color: rgb(0, 0, 0);">[![2025-11-22 23_33_12-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-22-23-33-12-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-22-23-33-12-echidnaml.png)</span>

##### <span style="color: rgb(45, 194, 107);">**El resultado**</span>

<span style="color: rgb(0, 0, 0);">Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)</span>

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

# MONTAJE 7 BIS MATA-ALIENS con acelerómetro

¿Se puede hacer el anterior ejercicio con el acelerómetro? Por supuesto que sí, la única diferencia es que el Joystick va de 0 a 1024 pero el acelerómetro tiene otros valores como puedes ve en esta página [https://echidna.es/hardware/componentes/acelerometro-black/](https://echidna.es/hardware/componentes/acelerometro-black/)

<table border="1" id="bkmrk-valor-m%C3%8Dnimo-valor-r" style="border-collapse: collapse; width: 100%; height: 89.3907px;"><colgroup><col style="width: 25%;"></col><col style="width: 25%;"></col><col style="width: 25%;"></col><col style="width: 25%;"></col></colgroup><tbody><tr style="height: 29.7969px;"><td style="height: 29.7969px;">  
</td><td style="height: 29.7969px;">**VALOR MÍNIMO**</td><td style="height: 29.7969px;">**VALOR REPOSO**</td><td style="height: 29.7969px;">**VALOR MÁXIMO**</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**JOYSTICK**</td><td style="height: 29.7969px;">0</td><td style="height: 29.7969px;">512</td><td style="height: 29.7969px;">1.024</td></tr><tr style="height: 29.7969px;"><td style="height: 29.7969px;">**ACELERÓMETRO**</td><td style="height: 29.7969px;">285</td><td style="height: 29.7969px;">359</td><td style="height: 29.7969px;">428</td></tr></tbody></table>

más o menos, pues cada placa es diferente

Puedes probar tus valores con este sencillo programa

[![2025-11-23 08_50_15-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-23-08-50-15-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-23-08-50-15-echidnaml.png)

Luego definimos los valores 300 y 400 arbitrarios pero menores y mayores que 359 pero sin llegar a los extremos 285 y 428 para que nuestro sprite nave se mueva :

[![2025-11-23 08_53_18-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-23-08-53-18-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-23-08-53-18-echidnaml.png)

# 4. Modo Makey Makey

# Modo Makey makey

En esa sección acuérdate de cambiar el Echidna en modo **MakeyMakey**

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

[![selector_modos-black-1.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/selector-modos-black-1.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/selector-modos-black-1.png)

<p class="callout warning">**ATENCIÓN**:   
EN MODO MAKEY MAKEY **PIERDES** TODA CONEXIÓN CON LOS SENSORES DE LA PLACA menos claro, los de Mky Mky</p>

[![2024-12-16 13_47_40-Modo Sensores modo MkMk Black - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-16-13-47-40-modo-sensores-modo-mkmk-black-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-16-13-47-40-modo-sensores-modo-mkmk-black-echidna-educacion.png)  
Fuente CC-BY-SA [https://echidna.es/](https://echidna.es/)

# ¿Qué es Makey Makey ?

Es una placa que se inventó en 2010 que permite conectar cualquier cosa que conduzca mínimamente la electricidad en entrada por el puerto USB. Para que lo entiendas bien, mira este vídeo:

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

Nuestra placa **tiene esta función**, pero en vez de ser una entrada por el puerto USB es una entrada por Arduino que podemos leer, luego en esta sección cambia nuestra placa Echidna el modo sensor a modo makey makey

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

Tiene las siguientes entradas:

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

- **ANALOGICAS**
    
    
    - Desde A0 hasta A5 que tenemos que detectarlas si superan un cierto “umbral” que dependerá de lo que conectemos.
- **DIGITALES**
    
    
    - D2 y D3 aquí es fácil, 0 o 1
- **GND** o sea el conector que tiene que conectarse a una parte de tu cuerpo para crear el puente eléctrico. <span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;">El logotipo Echidna también hace de masa</span></span>

<p class="callout warning">**IMPORTANTE**:   
La persona que toca los pines A0, A1... D2, D3 **también tiene que tocar GND masa**</p>

Entonces... ¿Qué ventajas tiene esta placa con respecto a la original?:

- Más **barata** (importante)
- **2x1** sí, sí, piénsalo: Tienes en la misma placa una Shield educativa con sensores y a la vez una Makey makey,
- **Autonomía**: Makey necesita un ordenador y nuestra Echidna necesita Arduino ¿Quién gana en simplicidad? si hacemos que nuestro programa se graba al Arduino: *¡¡La portabilidad es total!!*

*Nota*:

[Aquí](https://libros.catedu.es/books/scratch-avanzado-y-makey-makey) tienes un curso de manejo de la Makey Makey original con el curso Scractch avanzado y Makey Makey.

# Qué es la variable que hay que definir como UMBRAL

##### **<span style="color: rgb(22, 145, 121);">Experimento con Echidna Scratch</span>**

<span style="color: rgb(0, 0, 0);">Crea este sencillo programa, creando una variable llamada **umbral** ejecútalo y visualiza esa variable **sin tocar A0** y en modo MakeyMakey por supuesto **SALE 8-9**</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-07 19_21_31-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-19-21-31-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-19-21-31-echidnaml.png)</span>

<span style="color: rgb(0, 0, 0);">Repite el experimento pero conectando **un cable** entre masa y A0 **SALE 1023 EL MÁXIMO**</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-07 19_30_21-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-19-30-21-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-19-30-21-echidnaml.png)</span>

<span style="color: rgb(0, 0, 0);">Y ahora conectando entre masa y A0 tus dos manos: **SALE 300-600**</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-07 19_33_33-Editing Page Qué es la variable que... _ Librería CATEDU.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-19-33-33-editing-page-que-es-la-variable-que-libreria-catedu.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-19-33-33-editing-page-que-es-la-variable-que-libreria-catedu.png)</span>

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

<span style="color: rgb(0, 0, 0);">Como podemos ver, si tocamos el A0 directamente con un cable, su valor pasa de 8-9 a subir al máximo que es 1024</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">Pero si es a través de nuestro cuerpo, sólo sube hasta 500 pero alguna vez sólo llega a 400</span></p>

<p class="callout info"><span style="color: rgb(0, 0, 0);">*Moraleja*: Los valores de entrada en modo Makey Makey **depende del objeto que va a tocar** por lo tanto hay que definir un **umbral** que determine cuando no está tocando y cuando está tocando</span></p>

##### <span style="color: #169179;">**UMBRAL**</span>

---

<span style="color: rgb(0, 0, 0);">Como vemos que cuando no toca es un valor muy bajo 8-9 podemos definir **UMBRAL** como un valor 100, 200 o incluso 300 pero ya 400 puede dar falsos negativos. Recomendamos 100</span>

---

##### **<span style="color: rgb(22, 145, 121);">CON MBLOCK (no pases a mblock si ya trabajas con Echidna Scratch)</span>**

##### **<span style="color: rgb(22, 145, 121);">Conectar en vivo con mBlock</span>**

<span style="color: rgb(0, 0, 0);">Primero tiene que aprender cómo conectar nuestro Echidna (que es un Arduino UNO) en mBlock en modo VIVO</span>

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

##### <span style="color: rgb(22, 145, 121);">**Experimento, vamos a poner este código**</span>

<span style="color: rgb(0, 0, 0);">Una vez conectado nuestro Echidna en Vivo vamos a crear una variable global LEER y que sea siempre la lectura A0</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-06 20_46_39-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-20-46-39-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-20-46-39-mblock-v5-4-3.png)</span>

<span style="color: rgb(0, 0, 0);">luego al objeto panda, le vamos a poner este otro código</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-06 20_49_04-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-20-49-04-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-20-49-04-mblock-v5-4-3.png)</span>

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

<span style="color: rgb(0, 0, 0);">Vamos a ejecutar el código y vamos a ver la diferencia</span>

- <span style="color: rgb(0, 0, 0);">Conectando un cable de masa al A0</span>
- <span style="color: rgb(0, 0, 0);">Tocando una mano la masa y la otra a A0</span>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="634" src="https://www.youtube.com/embed/Pc_bEG0hmGg" title="Echidna modo Makey Makey experimento de lectura de variables" width="356"></iframe>

# Programas usando UMBRAL

Los programas tendrán la siguiente estructura básica

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

<span style="text-decoration: underline;"><span style="color: rgb(22, 145, 121); text-decoration: underline;">**PINES ANALOGICOS A0, A1, A2, A3, A4, A5**</span></span>  
Los programas tendrán simplemente que ejecutar un simple condicional que si la lectura del pin correspondiente A0, A1,... es mayor que UMBRAL pues que haga una cosa u otra

[![2024-12-07 19_57_02-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-19-57-02-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-19-57-02-echidnaml.png)

<span style="text-decoration: underline;"><span style="color: rgb(22, 145, 121); text-decoration: underline;">**PINES DIGITALES D2, D3**</span></span>

La estructura es la siguiente

[![2024-12-07 20_02_19-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-20-02-19-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-20-02-19-echidnaml.png)

<p class="callout info">COMO PUEDES VER NO HACE FALTA LA VARIABLE UMBRAL</p>

<p class="callout warning">[<span style="text-decoration: underline;">![2024-12-07 20_05_54-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-20-05-54-echidnaml.png) </span>](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-20-05-54-echidnaml.png)Esta instrucción no la utilizamos, no nos funciona bien, esperamos que las siguientes versiones de Echidna Scratch lo mejoren.</p>

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

<span style="color: rgb(0, 0, 0);">Aquí es más complicado pues al no tener instrucciones específicas, la comunicación entre ARDUINO UNO y los objetos ec.. hay que hacerlo con variables globales o mensajes, vamos a ver con mensajes:</span>

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

Definiremos UMBRAL y enviaremos un mensaje si se ha llegado a su valor o no

[![2024-12-06 21_06_43-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-21-06-43-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-21-06-43-mblock-v5-4-3.png)

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

En este caso el objeto panda, reacciona según el mensaje que le llega

[![2024-12-06 21_07_48-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-21-07-48-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-21-07-48-mblock-v5-4-3.png)

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

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

# MONTAJE 11 Piano

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

Instalaremos una extensión de música, como vemos se crean nuevas instrucciones. También hemos quitado el sprite del gato y hemos puedo un piano más acorde al ejercicio

[![2024-12-07 20_09_18-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-20-09-18-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-20-09-18-echidnaml.png)

Creamos un código de manera que toque una nota diferente si se toca A0, A1, ... D2, D3

[![2024-12-07 20_18_14-Presentación1 - PowerPoint.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-20-18-14-presentacion1-powerpoint.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-20-18-14-presentacion1-powerpoint.png)

El resultado

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

El programa lo tienes en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

<p class="callout success">**RETO: HAZLO CON BANANAS**  
Cada banana va con un cable cocodrilo-cocodrilo pero la persona que toca el piano tiene que también tocar la masa, tal y como vimos en [Qué es Makey Makey](https://libros.catedu.es/books/echidna/page/que-es-makey-makey)</p>

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

<p class="callout success">**RETO: HAZLO CON PERSONAS !!!**  
En este caso la persona que toca, si te fijas, tiene una pulsera con un cable a masa del Echidna  
El resto de participantes, toca con una mano un pin A0, A1, ... D2, D3 y con la otra la extienden para que pueda hacer teclado</p>

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

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

Vamos a hacerlo !! Ten en cuenta que mBlock utiliza la notación americana de notas, y a cada nota la vamos a corresponder a una entrada Makey Makey (utilizando por ejemplo el acorde 4):

<table id="bkmrk-nota-americana-c4-d4"><thead><tr><th>Nota americana</th><th>C4</th><th>D4</th><th>E4</th><th>F4</th><th>G4</th><th>A4</th><th>B4</th><th>C5</th></tr></thead><tbody><tr><td>Nota Europea</td><td>Do</td><td>Re</td><td>Mi</td><td>Fa</td><td>Sol</td><td>La</td><td>Si</td><td>Do</td></tr><tr><td>Makey</td><td>A0</td><td>A1</td><td>A2</td><td>A3</td><td>A4</td><td>A5</td><td>D2</td><td>D3</td></tr></tbody></table>

Como las entradas analógicas pueden variar desde 0 a 1024 vamos a fijar como umbral en 500 (si es muy sensible lo subimos, si no nos hace caso lo bajamos, a nosotros nos ha funcionado bien 500).

El código lo subiremos al Arduino pues mBlock responde muy lentamente, si no te acuerdas cómo se hacía mira esta [presentación](https://docs.google.com/presentation/d/e/2PACX-1vTkh8pwo-b7LACnD7_ZAfWzYCchZI9H1_uR-tZqgfBRtOPFOaVDH8ognsCNEXA8khLI7UX6ziUQXZsx/pub?start%3Dfalse%26loop%3Dfalse%26delayms%3D3000).

##### Solución

  
El programa es muy sencillo pero repetitivo:  
  
![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-6lghuadg.png)

Conectamos cada salida de Makey Makey a unos plátanos y la salida del auricular a unos altavoces de ordenador, en la foto puedes ver que se han utilizado unos cables con cocodrilos, y al subirlo al Arduino no hace falta tener el ordenador, alimentamos el Arduino con un PowerBank o incluso con pilas.

#### **ATENCIÓN VER [1.3 ALIMENTACION DEL ECHIDNA](https://libros.catedu.es/books/arduino-con-echidna-y-mblock-scratch/page/13-alimentacion-del-echidna "1.3 Alimentación del Echidna")**

En el kit que te prestamos para hacer este curso no están incluidos los plátanos, así que cálzate y baja a comprar unos. ¿no tienes perras? pues utiliza recursos humanos:

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

Esta noche prepara un karaoke con tus amigos.

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

# MONTAJE 12 Joystick plastilina

Con plastilina conductora podemos hacer interesantes proyectos. En un buscador puedes poner *plastilina conductora de electricidad* y tienes varias recetas, con harina, agua, aceite, limón...

<p class="callout warning">Una pega: No dura nada, a los pocos días se endurece o se pudre.</p>

Propuesta

<p class="callout info">Que un sprite se mueva según unos botones hechos de plastilina:</p>

- <p class="callout info">Botón con forma de ⇒</p>
- <p class="callout info">Botón en forma de ⇑</p>
- <p class="callout info">Botón en forma de ⇓</p>
- <p class="callout info">Botón en forma de ⇐</p>

Para este reto, definimos dónde colocamos los botones, de forma arbitraria :

*A3 conectado a la plastilina con forma de ⇒*  A1 conectado con la plastilina en forma de ⇑  
 *A5 conectado con la plastilina en forma de ⇓*  A2 conectado con la plastilina en forma de ⇐

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

<span style="color: rgb(0, 0, 0);">El programa no es complejo, simplemente que cuando se pulsa, la coordenada correspondiente se incremente o se decrementa. Se han añadido unos comentarios para tener claro los sentidos :</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-07 23_00_48-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-07-23-00-48-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-07-23-00-48-echidnaml.png)</span>

<span style="color: rgb(0, 0, 0);">El archivo lo tienes en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)</span>

<span style="color: rgb(0, 0, 0);">Aunque en el vídeo está hecho con mBlock3, el programa y el resultado es el mismo que en EchidnaScratch</span>

<span style="color: rgb(0, 0, 0);"><iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--3" src="//www.youtube.com/embed/zKnOm2Ec3es" width="560"></iframe>

</span>

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

<p class="callout warning">**Atención**: Las capturas de imagen están con mBlock3  
Para mBlock5 a estas alturas ya sabes lo que hay que hacer:  
1.- Crear unas variables globales A1, A2, A3, A4, A5  
2.- En el arduino un bucle para siempre que asigne estas variables a las entradas analógicas A1, A2 ....  
3.- Programar en el helicóptero el movimiento con esas variables globales creadas en el paso 1  
  
</p>

  
![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-9bgikbgt.png)  
  
El umbral se ha cambiado según la sensibilidad del botón.

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

Con la plastilina podemos hacer manualidades tipo conecta y que por la pantalla salga el resultado

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

En este ejemplo fue necesario subir el valor umbral a 200 para que funcionase correctamente  
*Agradecimientos Adolfo Fernandez*

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

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/IKLwcM7JYBQ" title="23 de enero de 2025" width="458"></iframe>

Las posibilidades son muchas, cuelga tus experiencias en este [muro](https://padlet.com/CATEDU/makey)

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

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

# 5. Inteligencia Artificial

# Qué es la IA

Con EchidnaScratch podemos integrar fácilmente la inteligencia artificial definiendo previamente los modelos en Learning ML

[![Blog_Echidna_MachineLearning.jpg](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/blog-echidna-machinelearning.jpg)](https://libros.catedu.es/uploads/images/gallery/2024-12/blog-echidna-machinelearning.jpg)  
CC-BY-SA Fuente [https://echidna.es/a-programar/echidnaml/](https://echidna.es/a-programar/echidnaml/)

{{@12181}}

# Tipos IA

<details id="bkmrk-viendo-esta-clasific"><summary>Viendo esta clasificación ¿Cuál es el tipo de IA que se usa en EchidnaScratch ?</summary>

Muy fácil: **ML Aprendizaje automático supervisado**

</details>{{@12182}}

# Robotica e IA

Como puedes ver ECHIDNA ES DE NUESTROS PREFERIDOS PARA USAR LA IA CON LA ROBOTICA

{{@13483}}

# Learning ML

Es un software IA que pertenece al primer grupo ML y subgrupo supervisado. Aunque esta de moda, lleva desde el 2015 en funcionamiento e integrado en Scratch [https://web.learningml.org/](https://web.learningml.org/)

<p class="callout success">Tiene la gran ventaja **que esta integrado con Echidna Scratch** POR LO QUE EL MODELO IA SE PUEDE UTILIZAR EN EL REPERTORIO DE INSTRUCCIONES</p>

[![2025-07-02 08_28_54-What is Machine Learning - LML - ArtificiaI Intelligence made easy.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-02-08-28-54-what-is-machine-learning-lml-artificiai-intelligence-made-easy.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-02-08-28-54-what-is-machine-learning-lml-artificiai-intelligence-made-easy.png)  
CC-BY-NC-SA https://web.learningml.org/

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

Permite aprender textos y tomar decisiones a partir de conjunto de textos etiquetados

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

Permite aprender textos y tomar decisiones a partir de conjunto de imágenes etiquetadas

##### <span style="color: rgb(22, 145, 121);">**RECONOCIMIENTO DE NÚMEROS**</span>

Este caso no lo abordaremos pues es para casos más académicos. Si quieres conocer este modelo, consultar su manual, en la página 22 Apéndice A: **Ejemplo de conjunto numérico tabular**, [https://web.learningml.org/en/learningml-manual/](https://web.learningml.org/en/learningml-manual/)

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

[![2025-11-28 18_45_47-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-28-18-45-47-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-28-18-45-47-echidnaml.png)

Permite elegir qué algoritmo usar (redes neuronales, vecino próximo...) y sus parámetros junto con gráficos para la visualización gráfica de la zona de indecisión. .. si quieres consultar más puedes consultar su manual, en la página 29 **Modo avanzado** en [https://web.learningml.org/en/learningml-manual/](https://web.learningml.org/en/learningml-manual/)

# MONTAJE 13 Reconocimiento de texto

<p class="callout info">Vamos a encender y apagar un objeto de luz usando texto predictivo con IA</p>

Al arrancar EchidnaScratch nos vamos a LEARNING ML, nos vamos a entrenar y que entrene con la clase **APAGA** las palabras que se nos ocurra:

[![2024-12-08 00_02_05-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-00-02-05-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-00-02-05-echidnaml.png)

Y con la clase **ENCIENDE** otras tantas palabras

[![2024-12-08 00_04_31-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-00-04-31-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-00-04-31-echidnaml.png)

Pulsamos que entrene (tarda un poco) y cuando nos diga que esta listo para usar el modelo, vamos a comprobarlo, como vemos, la palabra **MUCHA LUZ no aparece en las entrenadas**, pero detecta que tiene más posibilidades que lo que queremos es apagar la luz

[![2024-12-08 00_06_34-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-00-06-34-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-00-06-34-echidnaml.png)

<p class="callout warning">**Acuerdate de** grabarlo lo voy a grabar como enciende-apaga.json, se graba LOS DATOS DE ENTRENAMIENTO luego al volverlo a abrir, tienes que volver a crear el modelo</p>

[![2024-12-08 10_19_53-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-10-19-53-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-10-19-53-echidnaml.png)

**Ahora si** !! vamos a EchidnaScratch y creamos este programa usando las instrucciones de Learning ML que se basan en el modelo aprendido anteriormente

[![2024-12-08 00_30_31-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-00-30-31-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-00-30-31-echidnaml.png)

Aquí lo tienes todos los procesos en vídeo :

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/do0mDcAuE2w?t=134s" width="560"></iframe>

CC-BY SA Fuente [https://echidna.es/a-programar/echidnaml/como-empezar-con-machine-learning-y-echidna/](https://echidna.es/a-programar/echidnaml/como-empezar-con-machine-learning-y-echidna/)

El programa en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

El sprite lámpara lo he obtenido de [https://scratch.mit.edu/projects/198689957/editor/](https://scratch.mit.edu/projects/198689957/editor/)

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

##### <span style="color: rgb(22, 145, 121);">**Mejoramos nuestro modelo pero con ayuda de ChatGPT**</span>

*Agradecimientos a Fran Perez CP Ana Abarca de Bolea*

Hacemos los mismos pasos, pero con pocos sinónimos, solo dos en cada clase, y lo guardamos. Si nos fijamos en el fichero .json (lo abres con un editor de texto, el bloc de notas por ejemplo) el fichero .json no es más que un fichero que almacena los datos de forma clasificada :

```json
{"type":"text","data":{"Enciende":["Poca luz","On"],"Apaga":["Mucha luz","On"]}}
```

Le decimos a [chatgpt ](https://chatgpt.com/)que nos lo enriquezca con este prompt *(u otro similar)* con 20 sinónimos *(y si quieres más, pues más):*

> quiero que insertes dentro del corchete \[ \] de Enciende 20 sinónimos de órdenes para encender la luz y dentro del corchete de Apaga \[ \] quiero que pongas 20 sinónimos de órdenes para apagar la luz no pongas saltos de línea, mantén el formato {"type":"text","data":{"Enciende":\["Poca luz","On"\],"Apaga":\["Mucha luz","On"\]}}

El chatgpt responde con este código:

```
{"type":"text","data":{"Enciende":["Enciende la luz","Prende la luz","Activa la luz","Ilumina","Dale luz","Pon la luz","Conecta la luz","Inicia la luz","Enciende iluminación","Prende iluminación","Activa iluminación","Enciende lámpara","Prende lámpara","Enciende bombilla","Prende bombilla","Dale corriente a la luz","Sube la luz","Ilumina la habitación","Activa el foco","Pon luz"],"Apaga":["Apaga la luz","Apaga todo","Desconecta la luz","Quita la luz","Apaga lámpara","Apaga bombilla","Corta la luz","Desactiva la luz","Oscurece","Quita iluminación","Apaga iluminación","Cierra la luz","Desconecta iluminación","Apaga el foco","Apaga la lámpara","Corta iluminación","Desactiva iluminación","Quita corriente a la luz","Apaga por completo","Baja la luz"]}}

```

lo metes en el bloc de notas y lo guardamos como *loquequieras.json* y lo importamos en LearningML ¡¡ tenemos ahora 20 textos en cada clase !!! nuestra máquina de IA ha mejorado !!!

[![2025-12-05 14_29_02-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/2025-12-05-14-29-02-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/2025-12-05-14-29-02-echidnaml.png)

##### <span style="color: rgb(22, 145, 121);">**Otro ejemplo pero con una cerveza ;)**</span>

 [https://libros.catedu.es/books/robotica-educativa-con-mbot/page/maquina-educable-con-machine-learning-for-kids-y-scratch](https://libros.catedu.es/books/robotica-educativa-con-mbot/page/maquina-educable-con-machine-learning-for-kids-y-scratch)

# MONTAJE 14 Reconocimiento de imágenes

El proceso es similar, en este caso he utilizado el móvil y he mostrado a la cámara web las búsquedas de caras para que aprenda la diferencia entre niños, hombres y mujeres

[![2024-12-08 01_06_37-Como empezar con Machine Learning y Echidna - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-01-06-37-como-empezar-con-machine-learning-y-echidna-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-01-06-37-como-empezar-con-machine-learning-y-echidna-echidna-educacion.png)

😁 como veis, para probar el modelo he utilizado mi cara y me reconoce un 99% de hombre😁😁😁

##### <span style="color: rgb(22, 145, 121);">**Grabar y abrir una máquina de IA**</span>

<p class="callout warning">**OJO** hay que grabar el la máquina de inteligencia artificial que has creado !!! si cierras el programa se pierden todos los datos. **No advierte** que no lo has grabado</p>

Voy a crear otra máqina IA con los objetos Gafas - Taza- móvil y lo grabo

[![2024-12-08 09_50_29-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-09-50-29-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-09-50-29-echidnaml.png)

Al grabar lo hace con un nombre de archivo .JSON lo voy a hacer con el nombre **taza-gafas-movil.json** que lo tienes en [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

<p class="callout warning">Este archivo tiene **los datos de entrada NO LA MÁQUINA** luego si cerramos el programa y queremos abrirlo tenemos que volver a entrenarla:</p>

[![2024-12-08 10_03_31-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-10-03-31-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-10-03-31-echidnaml.png)

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

[![2024-12-08 10_09_53-Presentación1 - PowerPoint.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-10-09-53-presentacion1-powerpoint.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-10-09-53-presentacion1-powerpoint.png)

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

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

Sin Echidna se puede hacer simplemente con un Arduino y tres leds, verde al D11 amarillo al D12 y el rojo al D13 ver [https://libros.catedu.es/books/echidna/page/tengo-arduino-puedo-hacer-los-programas-sin-echidna](https://libros.catedu.es/books/echidna/page/tengo-arduino-puedo-hacer-los-programas-sin-echidna)

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="815" src="https://www.youtube.com/embed/FlLx9LxMQfQ" title="SEMAFORO CON IA ECHIDNA SCRATCH" width="458"></iframe>

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

Ver todo el proceso en este vídeo

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/WRwzmI9Dyns?t=261s" width="560"></iframe>

Fuente [https://echidna.es/a-programar/echidnaml/como-empezar-con-machine-learning-y-echidna/](https://echidna.es/a-programar/echidnaml/como-empezar-con-machine-learning-y-echidna/)

##### <span style="color: rgb(22, 145, 121);">**También recomendamos...**</span>

Usar **variables** para tener el control de lo que sucede de esta manera podemos controlar qué márgenes de confianza y cual es el resultado de la clasificación. Si el resultado no es el esperado:

- ajustar los valores de confianza en la imagen he puesto 0.9
- darle más fotos a la máquina de IA para que lo haga mejor.

[![2025-02-12 10_19_05-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-02/scaled-1680-/2025-02-12-10-19-05-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-02/2025-02-12-10-19-05-echidnaml.png)

**Reto** : Igual que los porteros automáticos, que se encienda la cámara si se aprieta el botón (por ejemplo SL)

**Solución**: En este caso es recomendable usar un pequeño retardo de 1segundo para que le de tiempo a capturar la imagen

Se puede mejorar el programa añadiendo un retardo antes de que se cierre la puerta, etc...

[![2025-02-17 11_49_47-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-02/scaled-1680-/2025-02-17-11-49-47-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-02/2025-02-17-11-49-47-echidnaml.png)

# MONTAJE 14BIS RECONOCIMIENTO DE MATRÍCULAS

Vamos a desarrollar este proyecto de Jorge Lobo @Lobo\_tic [https://x.com/lobo\_tic/status/1923996982516814064](https://x.com/lobo_tic/status/1923996982516814064)

> —Antes, para salir del parking del supermercado, había que escanear el ticket de compra, pero ahora la barrera se abre sola como si supiera que ese coche puede salir.  
>   
> —¿Queréis saber cómo lo sabe?  
>   
> Así surge la idea de esta actividad con [@EchidnaSTEAM](https://twitter.com/EchidnaSTEAM?ref_src=twsrc%5Etfw) y [@\_learningml\_](https://twitter.com/_learningml_?ref_src=twsrc%5Etfw) 😃 [pic.twitter.com/3Ew22WcURj](https://t.co/3Ew22WcURj)
> 
> — Jorge Lobo (@lobo\_tic) [May 18, 2025](https://twitter.com/lobo_tic/status/1923996982516814064?ref_src=twsrc%5Etfw)

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

<span style="color: rgb(0, 0, 0);">Ponemos un servo en D4 </span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">FÍJATE QUE EL **MARRÓN** A MASA GND SIMBOLO G TAL COMO LA FOTO Y EL AMARILLO EN DATO Dx</span></p>

<span style="color: rgb(0, 0, 0);">[![2025-06-17 21_55_44-.png](https://libros.catedu.es/uploads/images/gallery/2025-06/scaled-1680-/2025-06-17-21-55-44.png)](https://libros.catedu.es/uploads/images/gallery/2025-06/2025-06-17-21-55-44.png)</span>

##### <span style="color: rgb(22, 145, 121);">**SEGUNDO PASO : CREAR MÁQUINA IA DE RECONOCIMIENTO DE MATRICULAS**</span>

1. Entramos en crear máquina de reconocer imágenes
2. Creamos una clase que se llame **NO**
3. Añadimos imágenes desde nuestra webcam 
    1. Vamos enseñando matrículas que **no queremos que se abra el parking** de cada matrícula pulsamos una docena en diferentes posiciones (ligeros cambios)
    2. También añadimos varias imágenes que existe cuando no hay <span style="text-decoration: underline;">ninguna matrícula</span>, pues queremos que cuando no hay coche que no se abra el parking.
4. Añadimos la clase **SI**
    1. Repetimos el paso 3.1 con las matrículas que **queremos que se abra el parking**
5. Le damos a aprender
6. Probamos
7. Nos fijamos que funciona perfectamente

[![reconocimientomatriculas.png](https://libros.catedu.es/uploads/images/gallery/2025-06/scaled-1680-/reconocimientomatriculas.png)](https://libros.catedu.es/uploads/images/gallery/2025-06/reconocimientomatriculas.png)

Detalle del paso 3.2

[![2025-06-17 21_54_31-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-06/scaled-1680-/2025-06-17-21-54-31-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-06/2025-06-17-21-54-31-echidnaml.png)

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

Ahora entramos en la ventana de programación usando el modelo:

1. En **learningml** arrastramos la instrucción de **encender cámara**
    1. curiosamente lo voltea, por lo tanto le decimos ON FLIPPED de lo contrario lee al revés las matrículas (curiosamente lo hace bien aunque a veces falla)
2. Ponemos un bucle infinito para que siempre lea los sensores y funcionen los actuadores (típico en programas de robótica)
3. Un condicional dentro del bucle si --- sino y en la condición que sea si LA MATRICULA ES DE LA CLASE **SI** pues que abra sino que la cierre 
    1. Tiene dos instrucciones dentro de learningml uno que es que clasifique la imagen y otro que sea la imagen de la captura del vídeo
4. Si es SI pues que abra con el servo
5. También que encienda la luz verde y apaque el rojo
6. Esta espera es para que el coche pase tranquilamente además que nos permite que no haga contínuos aperturas y cierres de la barrera
7. SINO pues que cierre la barrera
8. Encienda rojo y apague verde

[![2025-06-17 21_42_52-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-06/scaled-1680-/2025-06-17-21-42-52-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-06/2025-06-17-21-42-52-echidnaml.png)

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

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

# MONTAJE 14 TRIS RECONOCIMIENTO GESTOS

Podemos realizar un programa que siga los movimientos del brazo

[![braquioplastia.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/braquioplastia.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/braquioplastia.png) y que el servo lo reproduzca

Haremos tres clases:

- 0 para el brazo a 0º
- 90 posición brazo 90º
- 180 posición brazo a 180º

Enseñamos a la máquina

[![2025-11-23 10_52_08-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-23-10-52-08-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-23-10-52-08-echidnaml.png)

[![2025-11-23 10_53_39-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-23-10-53-39-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-23-10-53-39-echidnaml.png)

El resultado

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="480" src="https://www.youtube.com/embed/IdaRjUQKZlI" title="ECHIDNA CON IA MONTAJE 14" width="853"></iframe>

# 6: Extensiones

# Extensiones de Echidna

En la esquina superior izquierda verás tres extensiones digitales

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

Para conexión de otros elementos como servos, sensores pero no pueden pasar de 300mA de lo contrario dañas al Arduino.

- **Salidas/Entradas digitales D4, D7 y D8**

La alimentación de estas I/O se puede elegir entre la salida de 5V por el Arduino y Vin con la tensión que estemos alimentando al Arduino utilizando el jumper que ya vimos [en su momento](https://libros.catedu.es/books/echidna/page/13-alimentacion-del-echidna "1.3 Alimentación del Echidna").

---

<p class="callout info">Nota: Acuerdate en toda esta sección de poner la Echidna en modo **Sensor**</p>

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

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

Lo tienes en [https://echidna.es/hardware/echidnablack/complementos-echidnablack/](https://echidna.es/hardware/echidnablack/complementos-echidnablack/)

[![2024-12-16 13_36_45-Complementos EchidnaBlack - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-16-13-36-45-complementos-echidnablack-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-16-13-36-45-complementos-echidnablack-echidna-educacion.png)

---

Pero no es necesario que sean las aconsejadas, aquí por ejemplo en este vídeo el Echidna se ha colocado en un chasis con unos motores y controlado por el Bluetooth del móvil. Este ejemplo del robot-coche no lo trataremos aquí pues es de un nivel superior, que se trata mejor en [Arduino con código](https://libros.catedu.es/books/programa-arduino-mediante-codigo "Programa Arduino Mediante Codigo")

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

Pero sólo está el límite de tu imaginación para convertir al Echidna el algo más poderoso ...

# Servo

##### <span style="color: rgb(22, 145, 121);">**Servo**</span>  
El servo es un motor que podemos controlar el ángulo de giro, hay diferentes clases, pero nos vamos a centrar en este que tiene un precio muy barato: SG90 que varía desde 0º a 180º

[![arduino-servo-sg90.webp](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/arduino-servo-sg90.webp)](https://libros.catedu.es/uploads/images/gallery/2024-12/arduino-servo-sg90.webp)  
Fuente Luis Llamas CC-B-SA [https://www.luisllamas.es/controlar-un-servo-con-arduino/](https://www.luisllamas.es/controlar-un-servo-con-arduino/)

##### <span style="color: rgb(22, 145, 121);">**Cómo se conecta el servo con la Echidna**</span>

El servo tiene tres cables,, marrón, rojo, y amarilo machos, conéctalos a uno de los pines de las extensiones, por ejemplo al D4 marcado como **1**. Fíjate bien, el marrón indica la masa hacia el borde y el amarillo hacia la cara interior:

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-uwsgt4em.png) ![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-oqvtelrd.png)[![2024-12-08 18_10_25-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-08-18-10-25-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-08-18-10-25-whatsapp.png)

##### <span style="color: rgb(22, 145, 121);">**Experimenta con el servo con EchidnaScratch !**</span>

Entra en EchidnaScratch, saca su instrucción a la palestra y haz dos cliks, experimenta con varios ángulos, verás que menores que lo mínimo es 0º y lo máximo 180º

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

<p class="callout success align-center">**SUPERFÁCIL !!!**</p>

Aprende más sobre servos en esta página de [Luis Llamas](https://www.luisllamas.es/controlar-un-servo-con-arduino/).

##### <span style="color: rgb(22, 145, 121);">**Experimenta con el servo c**</span><span style="color: rgb(22, 145, 121);">**on mBlock**</span>

Para experimentar tienes que usar esta instrucción

[![echidna-servo1.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-servo1.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-servo1.jpg)

Si intentamos trabajar con el servo con ángulos mayores de 180ª no hace caso, va al valor 180ª. Si ejecutas este programa lo verás:

[![echidna-servo2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-servo2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-servo2.jpg)

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

Mira la diferencia con un **servo de rotación continúa**, fíjate como:

- Los extremos 0º y 180º es a máxima velocidad, pero un sentido u otro.
- 90º es parado. - Un valor intermedio es menos velocidad (se ve el ejemplo 80º y 100º)
- Si tiene deriva, (cosa frecuente) hay un potenciómetro para ajustar.

<iframe allowfullscreen="allowfullscreen" height="314" id="bkmrk--11" src="//www.youtube.com/embed/Z-5SerXmRY0" width="560"></iframe>

# Montaje 15 Servo

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

<p class="callout info">Vamos a hacer un programa que el servo se mueva JUSTO EL MISMO ÁNGULO QUE LA PLACA ECHIDNA para conseguir que el servo se mantenga en su misma posicón.</p>

Para ello hay que tener en cuenta que:

- La Echidna cuando no esta inclinada muestra un valor de 350º, vamos a llamarlo ángulo de **inclinación**
- El servo cuando está en su punto medio, el brazo está a 90º, vamos a llamarlo **ángulo** al valor que quiero que se mueva el brazo del servo
- Por lo tanto entre los dos variables será 350-90=260º
- Sí **Ángulo** es igual a **inclinación** menos esa diferencia **260** entonces tenemos que el servo se mantendrá constante en su posición

El programa es :

[![montaje14-servo-codigo.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/montaje14-servo-codigo.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/montaje14-servo-codigo.png)

Se le añade un pequeño retardo de 0.5segundos pues se vuelve algo loco

El resultado es

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

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

<p class="callout success">**¿Te atreves..?**  
A realizar un programa que mueva el **servo según el valor del Joystick ejeY**?</p>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/A-wCDePVppI" title="angulo del servo según joystick Echidna" width="337"></iframe>

# Montaje 16 Servo con IA

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

<p class="callout info">Necesitamos que se reconozca un objeto entre varios de una cinta transportadora para desviarla a su destino correcto</p>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="315" src="https://www.youtube.com/embed/Qxi1v9tzNAQ?si=gLtg4oaLS0BZBjKt&start=10;end=40" title="YouTube video player" width="560"></iframe>

Vamos a distinguir entre paquetes (cajas) y bolsas

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

Entrenamos la máquina de inteligencia Artificial para que distinga entre un paquete y una bolsa

[![2024-12-09 20_38_50-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-09-20-38-50-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-09-20-38-50-echidnaml.png)

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

Ponemos este sencillo programa utilizando intrucciones de la máquina de IA creada:

[![2024-12-09 20_49_34-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-09-20-49-34-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-09-20-49-34-echidnaml.png)

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

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/7NJx-PdpwV8" width="560"></iframe>

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

##### <span style="color: rgb(22, 145, 121);">**No te quedes aquí, avanza !!!**</span>

Puedes hacer muchos, por ejemplo este que con inteligencia artificial, detecta si es un pájarlo y el espantapájaros se mueve ¿Te atreves a hacerlo?

[https://x.com/lobo\_tic/status/1858999814916370902](https://x.com/lobo_tic/status/1858999814916370902)

> Espantapájaros 🐦🧹controlado por IA con 🦔[@EchidnaSTEAM](https://twitter.com/EchidnaSTEAM?ref_src=twsrc%5Etfw) en el stand de la gente maja de [@MICROLOG\_TECNO](https://twitter.com/MICROLOG_TECNO?ref_src=twsrc%5Etfw) en [@SIMOEDU\_](https://twitter.com/SIMOEDU_?ref_src=twsrc%5Etfw) 😍 [pic.twitter.com/7O1fIH2xXB](https://t.co/7O1fIH2xXB)
> 
> — Jorge Lobo (@lobo\_tic) [November 19, 2024](https://twitter.com/lobo_tic/status/1858999814916370902?ref_src=twsrc%5Etfw)

<p class="callout success">Hemos explicado 16 montajes, ya con esto tienes roto el hielo para desarrollar proyectos con Edhidna</p>

##### <span style="color: rgb(22, 145, 121);">**Proyecto maqueta domótica con servo de motor contínua y led**</span>

<p class="callout info">Este proyecto está obtenido de [https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/](https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/) licencia CC-BY-SA por Jorge Lobo 29 mayo, 2021</p>

A continuación se propone una actividad que consiste en hacer una pequeña maqueta de una estancia y añadir una luz (un LED externo) y un ventilador (un servomotor de rotación continua) controlados desde el ordenador mediante un proceso de Inteligencia artificial.

<span style="color: rgb(22, 145, 121);">**CONSTRUYENDO LA MAQUETA**</span>

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="https://docs.google.com/presentation/d/e/2PACX-1vTlyMtqjb0Egj8GQno6Ldn-0HWQ9GQUb8Ob3SD8OjTz6ExJNvrbgsffx1fUbDPBS2a7rz6_OIC2q4o_/embed?start=false&loop=false&delayms=3000" width="560"></iframe>

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

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="https://docs.google.com/presentation/d/e/2PACX-1vQWgpHkVS0ry1sgx7B0SGJZcvj7lYgibDG3d2QkimNoFmpZOaHyU4rYPCTrXGkGF904lyQvkCPWKyVI/embed?start=false&loop=false&delayms=3000" width="560"></iframe>

<span style="color: rgb(22, 145, 121);">**VÍDEOS**</span>

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="https://www.youtube.com/embed/1N8gIUOGDlM" title="YouTube video player" width="560"></iframe>

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="https://www.youtube.com/embed/uZRnbfCEjvU" title="YouTube video player" width="560"></iframe>

**ARCHIVOS**

- [Entrenamiento](https://github.com/lobotic/Proyectitos/blob/master/Echidna/AsistenteVirtual/Asistente)
- [Proyecto sb3](https://github.com/lobotic/Proyectitos/blob/master/Echidna/AsistenteVirtual/Asistente1.sb3)

<p class="callout info">El anterior proyecto está obtenido de [https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/](https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/) licencia CC-BY-SA por Jorge Lobo 29 mayo, 2021</p>

Más proyectos en [https://echidna.es/recursos/proyectos/](https://echidna.es/recursos/proyectos/)

[![2024-12-10 14_07_59-.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-10-14-07-59.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-10-14-07-59.png)

# 7 Entradas de Echidna con mapeo (avanzado)

# Mapeo (avanzado)

{{@12749}}

# MONTAJE 8 Comebichos

No podemos dejar el Joystick sin hacer un videojuego !!

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

<p class="callout info">El siguiente **RETO** es: *Mover un Sprite “Bat” con el Joystick para atrapar un Beetle*</p>

- <p class="callout info">Bat se tiene que mover con el joystick por toda la pantalla.</p>
- <p class="callout info">Beetle se mueve horizontalmente desde el borde derecho hasta el borde izquierdo, y cuando llega al izquierdo, vuelve a aparecer en el derecho (y aleatoriamente desde cualquier altura)</p>
- <p class="callout info">![](https://libros.catedu.es/images/image9.png)<span style="background-color: rgb(211, 239, 255); color: rgb(1, 70, 108);"> </span>![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-ghudzm7y.png)[![2024-12-05 16_29_08-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-16-29-08-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-16-29-08-echidnaml.png)</p>

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

Añadimos los Sprite Beetle y Bat y borramos el gato

Al sprite BEETLE vamos a moverlo aleatoriamente con este script

[![2024-12-05 16_36_16-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-16-36-16-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-16-36-16-echidnaml.png)

El sprite BAT se moverá según la posición del JOYSTICK pero **mapeadas** es la SITUACION D de la página que has visto [**mapeo** ](https://libros.catedu.es/books/echidna/page/mapeo-avanzado)algo retocadas.

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

y le añadimos el siguiente código al BAT para que cuente los bichos comidos. Previamente crear una variable COMIDOS

[![2024-12-05 16_50_38-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-05-16-50-38-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-05-16-50-38-echidnaml.png)

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

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

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

  
El bicho Bettle lo haremos mover bastante rápido y al azar en el eje Y para que lo tenga difícil Bat:  
[![image-1648727480224.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648727480224.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648727480224.png)  
Y bat tiene que moverse con el joystick, que le pasaremos las variables A0 y A1. Por lo tanto el Arduino tiene este programa:

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

Además hemos añadido la puntuación y el cambio de disfraz para que parezca que aletea:

Por lo tanto el programa del objeto murciélago es  
[![echidna-comebichos2.png](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-comebichos2.png)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-comebichos2.png)El programa completo lo puedes descargar aquí [https://planet.mblock.cc/project/projectshare/3230393](https://planet.mblock.cc/project/projectshare/3230393)

El resultado es:

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

Lo sé …. soy bastante malo !!

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

# MONTAJE 9 SPRITEVOLADOR

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

El acelerómetro tiene el mismo efecto que el Joystick, nos da valores en el eje X o eje Y, en el caso del Joystick lo daba la inclinación de la palanca, en este caso lo da <span style="text-decoration: underline;">**la inclinación del mismo Echidna.**</span>

Está conectado a los pines analógicos:

- A2 nos da la inclinación en el eje X
- A3 nos da la inclinación en el eje Y

Los valores van desde 250 hasta 500

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

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

<p class="callout info">Vamos a realizar un sencillo videojuego: Mover un **sprite volador**, el movimiento de un sprite con el acelerómetro y esquivando edificios que se mueven de derecha a izquierda dando la sensación de que el sprite vuela.</p>

El reto te lo complicamos con dos premisas:

- Modificar disfraces del sprite
- Reutilizar sprites externos desde [Scratch](https://scratch.mit.edu/)

Este programa tienes tres pasos

1. **Sprite volador moviéndose según acelerómetro**
    1. Le añadimos un disfraz de explosión reutilizando de otro Sprite "sun"
    2. Movimiento según acelerómetro
2. **Sprite edificios**
    1. Exportación de sprites externos de otro autor
    2. Importación a nuestro proyecto
3. **Muerte del sprite volador si toca edificio.** Aquí es el código propio del juego

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

##### **<span style="color: rgb(22, 145, 121);">A1 Sprite PARROT moviéndose según acelerómetro</span>**

**<span style="color: rgb(22, 145, 121);">A1.1 Añadir un disfraz al PARROT de explosión. </span>**

1. <span style="color: rgb(0, 0, 0);">Quitamos el sprite del gato y añadimos el sprite **SUN**</span>
2. <span style="color: rgb(0, 0, 0);">Entramos en edición del sprite</span>
3. <span style="color: rgb(0, 0, 0);">Lo tuneamos un poco para que parezca una explosión (simplemente pintar de rojo el centro)</span>
4. <span style="color: rgb(0, 0, 0);">Lo exportamos</span>
5. <span style="color: rgb(0, 0, 0);">Guardamos con explosion.svg</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-06 08_45_02-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-08-45-02-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-08-45-02-echidnaml.png)</span>

<span style="color: rgb(0, 0, 0);">Ahora añadimos el Sprite PARROT y al sprite PARROT le ponemos el disfraz de explosión:</span>

1. <span style="color: rgb(0, 0, 0);">Añadimos el sprite PARROT</span>
2. <span style="color: rgb(0, 0, 0);">Borramos el anterior SUN ya no lo necesitamos</span>
3. <span style="color: rgb(0, 0, 0);">Entramos en Edición del sprite</span>
4. <span style="color: rgb(0, 0, 0);">Menú del disfraz (costume)</span>
5. <span style="color: rgb(0, 0, 0);">Upload costume</span>
6. <span style="color: rgb(0, 0, 0);">elegimos el fichero creado anteriormente "explosion.svg"</span>
7. <span style="color: rgb(0, 0, 0);">Abrimos</span>
8. <span style="color: rgb(0, 0, 0);">Ya tenemos un disfraz añadido al Parrot. Clica en el primer disfraz pues cuando vuelvas a la ventana de código verás el de explosión si no lo haces.</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-06 08_55_12-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-08-55-12-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-08-55-12-echidnaml.png)</span>

Otra manera más fácil sería simplemente añadir un disfraz de los sprite por defecto y en paz

[![2024-12-06 09_02_39-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-09-02-39-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-09-02-39-echidnaml.png)

**<span style="color: rgb(22, 145, 121);">A1.2 Movimiento del sprite PARROT </span>**

Vamos a hacer que el pájaro se mueva según el acelerómetro:

[![2024-12-06 09_12_19-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-09-12-19-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-09-12-19-echidnaml.png)

<p class="callout info">**MAPEO**: Queremos según el valor del acelerómetro, se representen en la pantalla de Scratch 2\*220 por 2\*180, es decir  
 - Eje X : el potenciómetro (vamos a llamarlo *potx*) va de 0 a 1023 y la salida (*ejex*) va de -220 a 220  
 - Eje Y : el potenciómetro (vamos a llamarlo *poty*) va de 0 a 1023 y la salida (*ejey*) va de -180 a 180  
Si vamos [a la hoja de cálculo](https://docs.google.com/spreadsheets/d/1qNbaZ2c_H1UCNhtvp2LimfWSbaGvZLVl5gJr9Wu0ifU/edit?usp=sharing), podemos sacar los valores de mapeo anteriores</p>

##### **<span style="color: rgb(22, 145, 121);">A2 Sprite EDIFICIO moviéndose de derecha a izquierda</span>**

<span style="color: rgb(0, 0, 0);">Dará sensación al sprite pájaro que está volando.</span>

<span style="color: rgb(22, 145, 121);">**A21 Exportación de Sprites externos**</span>

Vamos a ser vagos: Nos vamos a copiar de alguien externo:

Entramos en este proyecto FLY de scratch [https://scratch.mit.edu/projects/113582791/](https://scratch.mit.edu/projects/113582791/) entramos en su código y **exportamos** los edificios, nubes, etc...

[![2024-12-06 09_16_21-Fly, fly, fly !!! on Scratch.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-09-16-21-fly-fly-fly-on-scratch.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-09-16-21-fly-fly-fly-on-scratch.png)

Una vez dentro del editor **EXPORTAMOS ESTOS SPRITES**

**[![2024-12-06 09_19_07-Configuración.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-09-19-07-configuracion.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-09-19-07-configuracion.png)**

Simplemente botón derecho y ***EXPORTAR***

[![echidna-helicoptero2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero2.jpg)

Y guardamos esos ficheros generados **Buildings2.sprite3 Clouds.sprite3 Cloud.sprite3 Buildings.sprite3**

<span style="color: rgb(22, 145, 121);">**A22 Importación de los Sprites externos**</span>

1. Entramos en Añadir Sprite
2. Upload
3. Elegimos los ficheros exportados anteriormente en A21

[![2024-12-06 09_22_17-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-09-22-17-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-09-22-17-echidnaml.png)

<p class="callout success">**INCREIBLE** nos importa el Sprite **CON SU CÓDIGO INCLUIDO** si le das a la Bandera verás que el efecto sin apenas realizar trabajo</p>

##### **<span style="color: rgb(22, 145, 121);">A3 Muerte del PARROT</span>**

<span style="color: rgb(0, 0, 0);">Ya lo tenemos casi, añadimos al bucle de PARROT un condicional:</span>

- <span style="color: rgb(0, 0, 0);">Si PARROT toca BUILDINGS o BUILDINGS2 entonces</span>
    - <span style="color: rgb(0, 0, 0);">Cambia de disfraz **EXPLOSION**</span>
    - <span style="color: rgb(0, 0, 0);">Envía mensaje **komunikat1** que es el que utiliza el autor de los edificios para parar su movimiento, (debe de ser ruso su autor)</span>

<span style="color: rgb(0, 0, 0);">[![2024-12-06 10_07_06-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2024-12/scaled-1680-/2024-12-06-10-07-06-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2024-12/2024-12-06-10-07-06-echidnaml.png)</span>

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

<p class="callout success">**MEJORAS** Ya sé que colocando el helicóptero siempre arriba, siempre ganas!!  
**HAZ QUE SOLO SI TOCA BUILTING1 MUERE, PERO SI TOCA A BULDING2 QUE GANE UN PUNTO** de esta manera ya no se gana poniendo el helicóptero arriba del todo</p>

<iframe allowfullscreen="allowfullscreen" class="giphy-embed" frameborder="0" height="270" id="bkmrk--18" src="https://giphy.com/embed/f79OYWh5uwIfK" width="100%"></iframe>

Todos los programas de este curso se encuentran en este repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna)

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

##### **<span style="color: rgb(22, 145, 121);">B1 Sprite helicóptero moviéndose según acelerómetro</span>**

**<span style="color: rgb(22, 145, 121);">B11 Añadir un disfraz al helicóptero de explosión. </span>**

Vamos a añadir un objetos: helicóptero de la biblioteca- Le vamos a añadir un disfraz explosión

1.- Añade un objeto sun, y borra el dibujo interior, y así parece una explosión

[![echidna-helicoptero1.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero1.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero1.jpg)

2.- Exporta el fichero imagen svg

[![echidna-helicoptero5.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero5.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero5.jpg)

3.- Añade al helicóptero el disfraz

[![echidna-helicoptero6.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero6.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero6.jpg)

4.- Eligiendo el fichero svg exportado en el paso 3

[![echidna-helicoptero7.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero7.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero7.jpg)  
![](https://libros.catedu.es/images/image6.png)

**<span style="color: rgb(22, 145, 121);">B12 Movimiento helicóptero</span>**

Vamos a hacer que helicóptero que se mueva según el acelerómetro: (Ver al final DETALLES MAPEO)

[![echidna-helicoptero12.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero12.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero12.jpg)

En el arduino le asignamos las coordinadas a las variables globales A2 y A3

[![echidna-helicoptero11.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero11.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero11.jpg)

#### <span style="color: rgb(22, 145, 121);">**B2 Solución edificio, cómo se reutiliza un sprite**</span>

<span style="color: rgb(22, 145, 121);">**B21 Exportación de un Sprites externos**</span>

<span style="color: rgb(0, 0, 0);">Esta parte es igual que A21 luego no lo repetimos</span>

<span style="color: rgb(22, 145, 121);">**B22 Importación de Sprites externos**</span>

Vamos a mblock e **IMPORTAMOS** el fichero que hemos exportado  
[![echidna-helicoptero3.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero3.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero3.jpg)

Nos importa con sus disfraces Y SU CÓDIGO

Nos queda pues esta colección de objetos

[![echidna-helicoptero9.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero9.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero9.jpg)

##### <span style="color: rgb(22, 145, 121);">**B3 Solución a la muerte del helicóptero**</span>

Vamos a poner que si toca un edificio, “explota” (o sea, cambia el disfraz a explosión), además envía el mensaje “komunikat1” que vemos que el script del edificio lo necesita para esconderse una vez terminado el juego (debe de ser ruso el mensaje es del autor del objeto edificio) :  
  
[![echidna-helicoptero13.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-helicoptero13.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-helicoptero13.jpg)

El programa lo tienes aquí [https://planet.mblock.cc/project/3230430](https://planet.mblock.cc/project/3230430)

<p class="callout success">{{@5882#bkmrk-reto%3A-haz-que-solo-s}}</p>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">Detalles MAPEO verlo en la situación E de mapeo: https://libros.catedu.es/books/echidna/page/mapeo</span></p>

<p class="callout success">PUEDES CAMBIAR ESTOS VALORES TESTEANDO LOS MOVIMIENTOS DEL SPRITE</p>

# MONTAJE 10 MATA-ALIENS con Joystick. Hackeando código y mapeando

##### <span style="color: rgb(22, 145, 121);">**1.- IMPORTANDO PROYECTO EXTERNO SCRATCH A EchidnaScratch o mBlock**</span>

Entramos en SCRATCH [https://scratch.mit.edu/](https://scratch.mit.edu/) y buscamos ALIENS INVASION, concretamente este : [https://scratch.mit.edu/projects/593781518/](https://scratch.mit.edu/projects/593781518/)

[![2025-07-01 20_36_25-Scratch - Search.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-36-25-scratch-search.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-36-25-scratch-search.png)

Entramos en **SEE INSIDE**

[![2025-07-01 20_39_34-Aliens invasion on Scratch.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-39-34-aliens-invasion-on-scratch.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-39-34-aliens-invasion-on-scratch.png)

Lo grabamos en nuestro ordenador

[![2025-07-01 20_40_59-Aliens invasion on Scratch.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-40-59-aliens-invasion-on-scratch.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-40-59-aliens-invasion-on-scratch.png)

Nos vamos al programa ECHIDNA ML y cargamos el programa descargado

[![2025-07-01 20_42_13-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-42-13-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-42-13-echidnaml.png)

##### <span style="color: rgb(22, 145, 121);">**2.- Hackear el código para que funcione la nave con el joystick**</span>

<span style="color: rgb(0, 0, 0);">Vamos a fijarnos en el código de la nave, si nos fijamos se mueve si se pulsan las teclas ⬅️➡️</span>

[![2025-07-01 20_45_53-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-45-53-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-45-53-echidnaml.png)

Vamos a cambiar el código para que se mueva según el Joystick

Como el joystick está conectado a las entradas analógicas del Arduino, su valor va desde 0 a 1024 siendo aproximadamente 512 cuando esta en reposo o en posición del medio. Vamos a poner unas condicionales para que se mueva hacia la izquierda o hacia la derecha según estos valores, siendo 400 y 600 unos valores arbitrarios pero menores y mayores que 512 :

[![2025-07-01 20_53_11-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-53-11-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-53-11-echidnaml.png)

##### <span style="color: rgb(22, 145, 121);">**3.-Un poco más, disparar con D2 SR**</span>

También vamos a cambiar el disparador “espacio” :

En el sprite de la nave vamos a cambiar "Al presionar la tecla espacio"

[![2025-07-01 20_54_42-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-54-42-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-54-42-echidnaml.png)

Lo vamos a cambiar por

[![2025-07-01 20_56_11-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-56-11-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-56-11-echidnaml.png)

Igualmente en el sprite Button2 que es el "láser" hay que cambiar

[![2025-07-01 20_56_47-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-56-47-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-56-47-echidnaml.png)

Por

<span style="color: rgb(22, 145, 121);">**[![2025-07-01 20_58_12-EchidnaML.png](https://libros.catedu.es/uploads/images/gallery/2025-07/scaled-1680-/2025-07-01-20-58-12-echidnaml.png)](https://libros.catedu.es/uploads/images/gallery/2025-07/2025-07-01-20-58-12-echidnaml.png)**</span>

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

<p class="callout success">**MEJORALO** !!!  
- es un poco solo ¿le añades un sonido cada vez que se dispara?  
- se pueden hacer trampas, dejando apretado el botón hace una ráfaga continua. ¿Puedes limitar a un disparo láser cada vez que se aprieta? </p>

# 8 Extensiones (avanzado)

# ¿Y este capítulo?

Con los anteriores 15 montajes es suficiente para ya desarrollar proyectos con Echidna.

Este curso pertenece a otro antiguo que el paquete incluían más elementos

En este apartado lo mostramos aquí **para que te sirvan de inspiración en tus futuros proyectos.** Aunque están hechos con mBlock, son perfectamente realizables en EchidnaScratch

El antiguo paquete de préstamo contenía los siguientes elementos. :![]()

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

<p class="callout danger">En el caso de que tengas la **ECHIDNA BLACK** es lo mismo pero SIN LA PLACA ARDUINO pues la Echidna Black ya lo incorpora.</p>

Aquí puedes ver un precio orientativo de los elementos:

<iframe height="600px" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vQaUI7b_bM8_z-f8NOw-ueBNeHLFWA9Rc-8dBOqgfeTEm6AOxdvZ_ZtaqaA2TTJBqNLJh7TSOm5PGn8/pubhtml?widget=true&headers=false" width="100%"></iframe>

<iframe allowfullscreen="allowfullscreen" class="giphy-embed" frameborder="0" height="204" id="bkmrk--7" src="https://giphy.com/embed/udPf7Vf2G0KaY" width="100%"></iframe>

# Encendido sensible

## Sensor infrarojos

### Encendido Sensible 

Vamos a provechar las conexiones digitales que tiene Echidna preparado para conectar módulos exteriores, si te fijas está preparado para conectar fácilmente estos módulos pues facilita la alimentación, GND y el pin digital

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

Hay muchos módulos para conectar, y todos tienen la misma configuración en sus pines : GND, + , I/O, donde I/O es el pin digital o analógico de entrada o salida, dependiendo del sensor, y como puedes ver en la figura, hay mucha variedad (busca en Internet sensores para Arduino)

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

hay para a empezar con uno sencillo de entrada digital que es muy útil: el sensor Infrarrojos

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

Para ver más información de este sensor te recomendamos[ esta página.](https://www.luisllamas.es/detectar-obstaculos-con-sensor-infrarrojo-y-arduino/)

En el Echidna arriba a la izquierda tienes 3 conectores digitales a elegir, nosotros elegimos el primero D4 luego el pin OUT del sensor se conecta al D4, el resto en el mismo orden

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

Nota: El potenciometro es para ajustar la sensibilidad

**OJO Hay sensores que tiene los pines en otro orden FIJATE de lo contrario el sensor se pondrá a arder**

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

Nota: Hay sensores con 4 pines, que permiten alimentar el diodo IR de forma independiente, pero tienen un jumper que inutiliza el 4 para sólo utilizar los 3 pines.

Realizamos un pequeño programa muy fácil que detecta si hay un obstáculo o no:

En el Arduino

[![echidna-infrarojos.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-infrarojos.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-infrarojos.jpg)

En el panda

[![echidna-infrarojos2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-infrarojos2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-infrarojos2.jpg)

Y el disfraz costume2 lo hemos tintado de rojo

El programa lo tienes aquí [https://planet.mblock.cc/project/3232841](https://planet.mblock.cc/project/3232841)

El resultado es:

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

# Alarma láser

Hemos visto anteriormente una entrada digital sencilla con el sensor IR, ahora vamos a ver una salida digital muy simple, buscando siempre la motivación en nuestros proyectos: El diodo Laser.

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

Si quieres saber más de este componente, te recomendamos la página de [Luis Llamas](https://www.luisllamas.es/diodo-laser-arduino/). Si tienes que comprar uno, te recomendamos que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo \[[+info](https://cuidatuvista.com/punteros-laser-juguetes-ojos/)\]. El modelo que te proponemos es de **1mW**, no obstante, **EVITA QUE EL LÁSER APUNTE A LOS OJOS** espcialmente con niños.

**RETO** Te proponemos que realices un programa para desactivar una **ALARMA LASER**.

- La alarma está protegida por un haz laser (que enfoca a nuestro querido [LDR del Echidna](https://libros.catedu.es/books/echidna/page/montaje-5-ldr "3.2 El LDR en A5")), si se corta el haz la alarma suena.
- El disparo va a ser simulada en el ordenador, no queremos queremos que alertar a los vecinos, un sonido en el ordenador y en la pantalla una imagen en el ordenador.
- Para desactivar la alarma, pulsamos la tecla espacio, y nos pide introducir el código (tienes 10 segundos para darle más entusiasmo, sino se dispara), si has acertado, el laser se apaga y ya puedes entrar a tu lindo hogar.

Luego vamos a no ponernos nerviosos para desactivar la alarma y mantener la serenidad.

<iframe allowfullscreen="allowfullscreen" class="giphy-embed" frameborder="0" height="271" id="bkmrk--7" src="https://giphy.com/embed/29SqSyXlyO6WI" width="480"></iframe>

[via GIPHY](https://giphy.com/gifs/big-bang-theory-nervous-anxiety-29SqSyXlyO6WI)

##### Solución

  
**Conexiones** son sencillas, el laser al D4 por ejemplo y hay que tener maña para que apunte al LDR:

![](https://libros.catedu.es/assets/2017-12-25%2008_23_01-Documento1%20-%20Microsoft%20Word.png)[![image-1648741838386.png](https://libros.catedu.es/uploads/images/gallery/2022-03/scaled-1680-/image-1648741838386.png)](https://libros.catedu.es/uploads/images/gallery/2022-03/image-1648741838386.png)

**El script que controla si se corta el haz laser que se dispare** es un condicional que lee el LDR en A5, mientras sea mayor que 900 es que tiene una intensidad de luz muy grande, es decir, le está enfocando el laser, la variable \_PARACRONO \_es en el caso de que se desactive la alarma, el laser se apagará luego que no se crea que se corta el haz. Si se corta el haz envía un mensaje \_Booom \_que lo leeran los demás scripts. Se aprovecha este script para ENCENDER EL LASER pin digital 4 alto:

En el Arduino

[![echidna-laser1.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-laser1.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-laser1.jpg)

En el objeto (que hemos seleccionado una bomba y le hemos puesto un disfraz explosión tal y como se ha explicado antes, utilizando el objeto sun)

[![echidna-laser2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-laser2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-laser2.jpg)

**El script que controla la desactivación de la alarma mediante código** es el siguiente. Si se acierta con el código secreto 666, se envía el mensaje \_Ufff \_al resto de scripts:

[![echidna-laser3.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-laser3.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-laser3.jpg)

**El script que desactiva la alarma** es cuando reciba el mensaje \_Ufff \_por lo tanto para el cronómetro y apaga el laser:

[![echidna-laser4.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-laser4.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-laser4.jpg)

**El script del tiempo** cuenta de forma descendente, y si finaliza envía el mensaje Boom al resto de scripts, sólo se para si PARACRONO=1  
  
[![echidna-laser5.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-laser5.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-laser5.jpg)

Y por último la explosión

[![echidna-laser6.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-laser6.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-laser6.jpg)  
  
El resto: esconder y mostrar scripts y disfraces se omiten por simplicidad, el programa lo puedes descargar aquí : [https://libros.catedu.es/books/arduino-con-echidna-y-mblock-scratch/page/53-montaje-15-alarma-laser](https://libros.catedu.es/books/echidna/page/montaje-15-alarma-laser)

El resultado es

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

## OTRO RETO

Si se corta el haz, hay 10 segundos para desactivarlo con código, sino, se dispara. No ponemos la solución ¡¡ponlo tú en [el muro](https://libros.catedu.es/books/echidna/page/muro) !!

Seguro que se te ocurren muchas ideas...

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

# Tractor entrando al corral

Te proponemos un reto utilizando dos elementos vistos en esta unidad, para dar un poco de rienda suelta a tu imaginación de la cantidad de proyectos que se pueden hacer.

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

Construir un proyecto donde la barrera (hecha de cartón y fijada al servo) está bajada y el semáforo en rojo. Si el sensor IR detecta un vehículo, tiene que abrir la barrera durante 5 segundos y el semáforo en verde. Antes de cerrar, se encenderá el semáforo en naranja para advertir que se va a cerrar la barrera.

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

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

Conectamos por ejemplo el servo al D4 y el sensor de IR al D7  
Con mBlock 3  
![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-edw9ns9e.png)

Con mBlock5 es igual

[![echidna-servo3.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-servo3.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-servo3.jpg)

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

#### <span style="color: rgb(22, 145, 121);">**Otro reto más difícil**</span>

Este ya es para los "sobresalientes":

Podemos hacer que la barrera se abra con Bluetooth, o que también baje si el sensor de Ultrasonidos en el otro lado detecta que el vehículo ya ha pasado. Aunque el vídeo está hecho con la Shield Edubásica perfectamente se puede hacer con Echidna, y en nuestro caso podemos sustituir un sensor ultrasonidos con un sensor IR.

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

# Semáforo distancia

Queremos poner un ejemplo de un sensor que tenga 4 pines, barato y que puede darnos mucho juego pues nos da información de la distancia en la que se encuentra un objeto.

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

Funciona por eco entre la señal que se emite por Trg y la que se recibe por Echo y para su utilización requiere utilizar la fórmula de conversión de tiempo a espacio con la fórmula de la velocidad del sonido... tranqui !! no lo vamos a hacer, pues ya mBlock tiene una función especial para ello sin utilizar fórmulas y **nos da directamente la distancia en cm**, pero si quieres saber más sobre este sensor, te recomendamos la página de [Luis Llamas.](https://www.luisllamas.es/medir-distancia-con-arduino-y-sensor-de-ultrasonidos-hc-sr04/)

[![echidna-semaforo-distancia1.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-semaforo-distancia1.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-semaforo-distancia1.jpg)

##### <span style="color: rgb(22, 145, 121);">**RETO LEER EL VALOR DEL SENSOR ULTRASONIDOS**</span>

Queremos que el objeto panda nos diga la distancia en cm

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

Hay un problema

<p class="callout info">En mBlock3 se puede utilizar en vivo. En mBlock5 **no se puede UTILIZAR EN VIVO LA INSTRUCCION LEE SENSOR ULTRASONIDOS** no sabemos por qué. Sólo podemos cargar el programa en el Arduino</p>

Gracias a la contestación [de este foro](https://forum.makeblock.com/t/how-to-enable-the-block-read-ultrasonic-sensor-trig-pin-echo-pin/17009/3), podemos hacerlo instalando una extensión

[![echidna-semaforo-distancia2.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-semaforo-distancia2.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-semaforo-distancia2.jpg)

Hay que instalarlo **en los dos, en el Arduino y en el objeto Panda**

En el objeto panda pondremos este código

[![echidna-semaforo-distancia3..jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-semaforo-distancia3.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-semaforo-distancia3.jpg)

CONEXIOONES Como se necesitan 4 pines, y las extensiones tienen 3 utilizaremos alguno libre.

La conexión que vamos a realizar entre los pines I/O de Echidna y el sensor ultrasonidos HC-SR04 va a ser:  
  
 *el D4 en Trig*  el D7 en Echo  
 *el '+' en Vcc*  el G en GND

y en el Arduino el siguiente programa, y pulsamos SUBIR

[![echidna-semaforo-distancia4.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-semaforo-distancia4.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-semaforo-distancia4.jpg)

Resultado: El panda nos dice en cm el obstáculo que ponemos delante del sensor US:

[![echidna-semaforo-distancia5.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-semaforo-distancia5.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-semaforo-distancia5.jpg)

El programa lo tienes aquí : [https://planet.mblock.cc/project/3233976](https://planet.mblock.cc/project/3233976)

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

Realizar un programa que a medida que se acerque un objeto, se enciendan más luces

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

El programa es simplemente recoger la distancia con la instrucción que hemos señalado antes. La conexión igual que antes y por lo tanto el programa es poner de límites 50cm, 40cm, 30cm, 20cm y 10cm para ir encendiendo luces.  
  
El programa es largo

[![echidna-semaforo-distancia6.jpg](https://libros.catedu.es/uploads/images/gallery/2023-11/scaled-1680-/echidna-semaforo-distancia6.jpg)](https://libros.catedu.es/uploads/images/gallery/2023-11/echidna-semaforo-distancia6.jpg)

El programa lo tienes aquí [https://planet.mblock.cc/project/3233931](https://planet.mblock.cc/project/3233931)

El resultado es :

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

Los siguientes retos, aunque las imágenes se ve que no están hechos con Echidna, da igual, es simplemente conectar el trig y echo en los pines D4 y D7 del Echidna y utilizar la instrucción de *"lee el sensor ultrasónico trig pin 4 echo pin 7"* (o utilizar otro orden o el D8 si te pones revelde y cambiar los números anteriores) **¿Te atreves a hacerlos todos ?**

<iframe allowfullscreen="allowfullscreen" class="giphy-embed" frameborder="0" height="394" id="bkmrk--9" src="https://giphy.com/embed/aCrRttmzK1jKo" width="480"></iframe>

[via GIPHY](https://giphy.com/gifs/yes-the-big-bang-theory-sheldon-cooper-aCrRttmzK1jKo)

 **RETO HINCAR UNA PELOTA**  Pon de sprite una pelota y que se hinche a medida que acercas un objeto al ultrasonidos. [Solución](https://catedu.github.io/ensena-pensamiento-computacional-con-arduino/ultrasonidos.html)

**RETO PIANO INVISIBLE**

Que suene una nota según la distancia del objeto. [Solución](https://catedu.github.io/ensena-pensamiento-computacional-con-arduino/piano_invisible_con_ultrasonidos.html)

**RETO RADAR CON INTERMITENCIA DE UN LED**

Cuanto más cerca está un objeto, más rápido un led se enciende y apaga. [Solución](https://catedu.github.io/ensena-pensamiento-computacional-con-arduino/con_un_led.html)

**RETO SENSOR PARKING**

Cuanto más cerca está un objeto, más rápido suena un pitido intermitente [Solución](https://catedu.github.io/ensena-pensamiento-computacional-con-arduino/con_altavoz_del_pc.html)

# Bluetooth I Un poco de teoría

{{@7221}}

# Bluetooth II APP Serial Bluetooth Terminal

{{@13598}}

# Bluetooth III El HC06

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

<p class="callout warning">**ATENCIÓN**: COMO PUEDES VER LOS PINES DE TRANSMISIÓN Y DE RECEPCIÓN SON D0 Y D1 QUE COINCIDEN CON LA TRANSMISIÓN Y RECEPCIÓN DEL PUERTO SERIE UCB **POR LO TANTO NO SE PUEDE UTILIZAR A LA VEZ EL HC06 Y LOS DATOS POR EL USB <span style="background-color: rgb(241, 196, 15);">EL HC06 BLOQUEA LA COMUNICACIÓN POR CABLE</span>**</p>

<p class="callout success">ESTA ES LA RAZÓN POR LA CUAL **NO SE PUEDE UTILIZAR EL PROGRAMA ECHIDNA ML** PARA PROGRAMAR   
PUES TRABAJA EN VIVO, puedes utilizar cualquier programa que trabaje en carga: mBlock, ArduinoIDE...</p>

[![2025-12-05 09_34_26-Microsoft PowerPoint - [Presentación1].png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/2025-12-05-09-34-26-microsoft-powerpoint-presentacion1.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/2025-12-05-09-34-26-microsoft-powerpoint-presentacion1.png)  
*Fuente de las imágenes: [www.echidna.es](https://www.echidna.es)*

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

Echidna tiene un conector preparado para conectar un módulo de Bluetooth

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

Nosotros utilizaremos un JY-MCU o [HC-06](https://www.electronicaembajadores.com/es/Productos/Detalle/LCBTHT6/modulos-electronicos/modulos-bluetooth/modulo-bluetooth-hc-06) muy común y barato :  
![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-l2xxsilg.png)

Para conectar el HC-06 lo hacemos hacia abajo de modo que coincida los pines:

<table id="bkmrk-pines-del-hc-06-pine" style="height: 160px;" width="504"><thead><tr><th style="width: 167.656px;">Pines del HC-06</th><th style="width: 167.656px;">Pines del Echidna</th><th style="width: 167.688px;">Pines del Arduino</th></tr></thead><tbody><tr><td style="width: 167.656px;">Vcc</td><td style="width: 167.656px;">5V</td><td style="width: 167.688px;">5V</td></tr><tr><td style="width: 167.656px;">GND</td><td style="width: 167.656px;">GND</td><td style="width: 167.688px;">GND</td></tr><tr><td style="width: 167.656px;">RX</td><td style="width: 167.656px;">TX</td><td style="width: 167.688px;">D1</td></tr><tr><td style="width: 167.656px;">TX</td><td style="width: 167.656px;">RX</td><td style="width: 167.688px;">D0</td></tr></tbody></table>

![](https://libros.catedu.es/uploads/images/gallery/2022-03/embedded-image-sfvrmhsa.png)  
En la foto aparece un echidna red

Een la black es igual hacia abajo pero **ponlo en medio del zócalo** para que coincida bien, pues en el Echidna Black el zócalo hembra tiene 6 pines y el HC06 tiene 4:

[![EchidnaBlack_0_BT34-600x336.png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/echidnablack-0-bt34-600x336.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/echidnablack-0-bt34-600x336.png)  
Imagen [www.echidna.es](https://www.echidna.es)

# Bluetooth IV El programa en mBlock

Como ya hemos visto NO podemos usar EdhidnaML pues trabaja en vivo y el HC06 bloquea el cable USB

##### <span style="color: rgb(22, 145, 121);">**PASO 1 INSTALAMOS EL DISPOSITIVO ARDUINO IDE**</span>

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

[![2025-12-05 10_03_34-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/2025-12-05-10-03-34-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/2025-12-05-10-03-34-mblock-v5-4-3.png)

##### <span style="color: rgb(22, 145, 121);">**PASO 2 INSTALAMOS LA EXTENSIÓN BLUETOOTH SERIAL**</span>

Hay muchas extensiones que trabajan el Bluetooth con Arduino (hay mucha basura) hemos elegido este pues es una extensión sencilla, en castellano y que envía como recibe por el Bluetooth

[![2025-12-05 10_15_18-Greenshot image editor.png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/2025-12-05-10-15-18-greenshot-image-editor.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/2025-12-05-10-15-18-greenshot-image-editor.png)

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

<span style="color: rgb(0, 0, 0);">Con la extensión instalada y el dispositivo ya podemos empezar a programar</span>

<span style="color: rgb(0, 0, 0);">**ENUNCIADO** Vamos a realizar un programa que envíe y reciba datos desde la APP del móvil al Echidna</span>

- <span style="color: rgb(0, 0, 0);">Si envío una R se enciende el Rojo</span>
- <span style="color: rgb(0, 0, 0);">Si envío una A se enciende el Amarillo</span>
- <span style="color: rgb(0, 0, 0);">Si envío una L que me diga el nivel de Luz que hay, 10 lecturas para ver cómo cambia</span>

**<span style="color: rgb(0, 0, 0);">SOLUCIÓN</span>**

<span style="color: rgb(0, 0, 0);">[![2025-12-05 10_17_34-mBlock v5.4.3.png](https://libros.catedu.es/uploads/images/gallery/2025-12/scaled-1680-/2025-12-05-10-17-34-mblock-v5-4-3.png)](https://libros.catedu.es/uploads/images/gallery/2025-12/2025-12-05-10-17-34-mblock-v5-4-3.png)  
El programa lo puedes descargar aquí [https://planet.mblock.cc/project/6844489](https://planet.mblock.cc/project/6844489)</span>

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

<p class="callout info">**CUÁNTO HAY QUE MAPEARLO** pues el LDR según [www.echidna.es](https://www.echidna.es) va desde 1 a 900 y Bluetooth **solo lee un carácter en ASCII** luego convertimos el valor de A5 (1-900) a un valor ASCII que si vemos la tabla, lo hacemos para los valores de los caracteres 48 (0) a 57 (9) y así nos da una lectura de la cantidad de luz entre 0 y 9</p>

<table class="table table-ascii table-bordered table-border-ascii table-hover table-xs page-break" id="bkmrk-valor-ascii-caracter" style="height: 458px; width: 100%;"><thead><tr><td style="width: 49.9405%;">VALOR ASCII</td><td style="width: 49.9405%;">CARACTER</td></tr></thead><tbody><tr><td style="width: 49.9405%;">48</td><td style="width: 49.9405%;">0</td></tr><tr><td style="width: 49.9405%;">49</td><td style="width: 49.9405%;">1</td></tr><tr><td style="width: 49.9405%;">50</td><td style="width: 49.9405%;">2</td></tr><tr><td style="width: 49.9405%;">51</td><td style="width: 49.9405%;">3</td></tr><tr><td style="width: 49.9405%;">52</td><td style="width: 49.9405%;">4</td></tr><tr><td style="width: 49.9405%;">53</td><td style="width: 49.9405%;">5</td></tr><tr><td style="width: 49.9405%;">54</td><td style="width: 49.9405%;">6</td></tr><tr><td style="width: 49.9405%;">55</td><td style="width: 49.9405%;">7</td></tr><tr><td style="width: 49.9405%;">56</td><td style="width: 49.9405%;">8</td></tr><tr><td style="width: 49.9405%;">57</td><td style="width: 49.9405%;">9</td></tr></tbody></table>

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

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="849" src="https://www.youtube.com/embed/g1jR_YQzg84" title="BLUETOOTH MBLOCK Y ECHIDNA" width="477"></iframe>

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

Hay otras apps como el Arduino Bluetooth Control que permite poner flechas, control de voz... pero no permite envío de Echidna a APP

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

Incluso se podría hacer un coche teledirigido, el programa lo tienes en el repositorio: [https://github.com/JavierQuintana/Echidna](https://github.com/JavierQuintana/Echidna) y el vídeo en el [muro](https://libros.catedu.es/books/echidna/page/muro)

# 9 Programación con código (avanzado)

# Ojo: Tres cosas

##### <span style="color: rgb(22, 145, 121);">**Te cargas el firmware**</span>

Si te pasas a la programación por código **te cargas el firmware** pues grabas tu programar en el Arduino del Echidna.

- Si quieres volver a programar con Echidna Scratch tienes que cargar el FIRMATA ver [Por si te pasa, PROBLEMA: EchidnaScratch no detecta Echidna: Instalar Firmata](https://libros.catedu.es/books/echidna/page/por-si-te-pasa-problema-echidnascratch-no-detecta-echidna-instalar-firmata)
- Si quieres volver a programar con mBlock tienes que instalar el firmware de mBlock ver [Por si te pasa, PROBLEMA: mBlock no detecta Echidna: Instalar Firmware mBlock](https://libros.catedu.es/books/echidna/page/por-si-te-pasa-problema-mblock-no-detecta-echidna-instalar-firmware-mblock)

##### <span style="color: rgb(22, 145, 121);">**Ponlo en modo sensor**</span>

Nota: Acuérdate de poner la Echidna en modo Sensor, es decir Echidna no trabaja en modo MkyMky

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

##### <span style="color: rgb(22, 145, 121);">**Tienes que saber algo de código**</span>

Este curso no pretende ser una formación en código Arduino IDE, sino que tienes que saber ya los conceptos básicos. Sólo pretende que sepas como utilizar tus conocimientos de código en el Echidna

# Entorno de programación de Arduino

{{@2938}}

# Semáforo

Tal y como hemos comentado, tienes dos formas de ejecutar el programa Arduino IDE, o descargándote el programa o online

La placa que tienes que seleccionar es **Arduino UNO** aunque si estas utilizando Echidna Black puedes seleccionar Arduino nano, no obstante no pasa nada si seleccionas Arduino Uno

<p class="callout info">Vamos a realizar un programa que sea un simple semáforo (secuencias de luces rojo-amarillo-verde en bucle cada 2seg) y además que muestre por el puerto serie (para practicar esta opción) el estado del semáforo.</p>

El programa es sencillo, lo tienes desarrollado aquí

[https://app.arduino.cc/sketches/6705568b-32f2-43ca-a7f8-25d0fcd72bf8?view-mode=preview](https://app.arduino.cc/sketches/6705568b-32f2-43ca-a7f8-25d0fcd72bf8?view-mode=preview)

<iframe frameborder="0" src="https://app.arduino.cc/sketches/6705568b-32f2-43ca-a7f8-25d0fcd72bf8?view-mode=preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

Y puedes ver que además de encender las luces, por el **puerto serie** salen los mensajes correspondientes

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

# Semáforo sonido

Vamos a practicar con el semáforo y con la lectura de una variable analógica como es el micrófono conectado a A7 cuyos valores van de 0-1023.

<p class="callout info">Realizar un programa que :  
- si el valor del sonido es menor de 2 ninguna luz esta encendida  
- si es entre 2-200 solo el verde  
- si es entre 200-400 entonces verde y amarillo  
- si es más de 400 entonces todos</p>

Solución aquí [https://app.arduino.cc/sketches/8ceb4e52-0447-4968-b2bb-8720de847248?view-mode=preview](https://app.arduino.cc/sketches/8ceb4e52-0447-4968-b2bb-8720de847248?view-mode=preview)

<iframe frameborder="0" src="https://app.arduino.cc/sketches/8ceb4e52-0447-4968-b2bb-8720de847248?view-mode=preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/bi17ruyNxSg" title="8 de diciembre de 2024" width="337"></iframe>

<p class="callout success">**¿Te atreves a ...?**  
Realizar un programa que haga lo mismo pero con la temperatura (los valores límites de encendido y apagado de las luces dependen de la temperatura de trabajo)</p>

# Pulsador y leds

Vamos ahora a realizar un código que si pulso el botón D2 entonces las tres luces del semáforo se encienden

El código lo tienes aquí

[https://app.arduino.cc/sketches/16b618d5-af1f-425c-8279-7be1b98d8a0f?view-mode=preview](https://app.arduino.cc/sketches/16b618d5-af1f-425c-8279-7be1b98d8a0f?view-mode=preview)<iframe frameborder="0" src="https://app.arduino.cc/sketches/16b618d5-af1f-425c-8279-7be1b98d8a0f?view-mode=embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

Como puedes ver **no es necesario tener el ordenador conectado** puedes conectarlo a un PowerBank pues no hay comunicación con el puerto serie y el programa **se carga** en la placa  
<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/0S3sqvE-eWQ" title="pulsador led echidna" width="337"></iframe>

# Señales PWM

{{@2946}}

# Intensidad del led verde según joystick

Vamos a utilizar la salida D11 que es PWM (led verde) para modular una señal PWM, para ello vamos a utilizar la entrada analógica del eje x del Joystick, en A0 para modularlo

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

{{@2950#bkmrk-como-uno-lee-0-a-102}}

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

[https://app.arduino.cc/sketches/491021f3-fbd8-498f-99a1-1a5ff02a441d?view-mode=preview](https://app.arduino.cc/sketches/491021f3-fbd8-498f-99a1-1a5ff02a441d?view-mode=preview)

<iframe frameborder="0" src="https://app.arduino.cc/sketches/491021f3-fbd8-498f-99a1-1a5ff02a441d?view-mode=preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

Como puedes ver, en el puerto serie, los valores del potenciómetro del Joystick ejeX van desde 0 a 1024 y gracias al mapeo la señal PWM va desde 0 a 255

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

##### <span style="color: rgb(22, 145, 121);">**¿Se puede hacer sin la instrucción map?**</span>

Sí. Para ello el valor que lee 0-1024 lo convertimos a 0-255 que necesita la señal PWM que enviamos al LED simplemente dividiéndolo entre 4. (1024/4 = 256 aproximadamente 255)

El bucle loop() quedaría :

```
void loop() {
  // lee el valor de la entrada analogica:
  potValor = analogRead(analogInPin);
  // mapea el rango para la señal de salida PWM:
  outputValor = potValor/4;
  // asigna el valor cambiado a pin 3 PWM:
  analogWrite(analogOutPin, outputValor);

  // escribe el resultado en el monitor serie:
  Serial.print("Potenciometro = " );
  Serial.print(potValor);
  Serial.print("\t PWM = ");
  Serial.println(outputValor);

  // espera 1 segundo cada bucle para una visualizacion aceptable
  // conviene tener un valor aunque sea pequeño (10ms)
  // por el proceso de conversion de A/D
  delay(10);
}
```

# Intensidad del led verde según la luz en LDR

Ahora para practicar más los conceptos anteriores

<p class="callout info">Vamos a modificar la luz del led verde según la luz recibida en el LDR **pero al revés** cuanto más luz reciba el LDR más se apaga el led verde y al revés cuanto menos luz reciba el led LDR más brilla el led verde</p>

Aquí vamos a tomar como valores mínimos y máximos del LDR los valores 250 de mínimo y 1.000 de máximo. Esto lo puedes comprobar en los valores del puerto serie que se visualizan en el siguiente programa. El por qué más adelante.

Como va al revés, la instrucción map será así **luz = map(analogRead(ldr), 250, 1024, 255, 0);**

[https://app.arduino.cc/sketches/adb0c4b8-c7b5-478f-b902-392674372159?view-mode=preview](https://app.arduino.cc/sketches/adb0c4b8-c7b5-478f-b902-392674372159?view-mode=preview)

<iframe frameborder="0" src="https://app.arduino.cc/sketches/adb0c4b8-c7b5-478f-b902-392674372159?view-mode=preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

Como puedes ver el brillo de la luz verde va al revés de la luz recibida en el LDR

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/0CctOVw-Uw4" title="intensidad del led verde según la luz del ldr echidna" width="337"></iframe>

##### <span style="color: rgb(22, 145, 121);">**¿Por qué el LDR va de 250 a 1.024 en vez de 0 a 1.024?**</span>

Esto es debido al que el LDR no está directamente conectado a masa, sino a través de un divisor de tensión con una resistencia de 4.7kOhm que se queda algo de tensión. Lo puedes comprobar en los planos aquí [https://github.com/EchidnaShield/Recursos/blob/master/electronica/Black/EchidnaBlack\_0\_ESQ.pdf](https://github.com/EchidnaShield/Recursos/blob/master/electronica/Black/EchidnaBlack_0_ESQ.pdf)

[![2025-01-04 00_34_57-Recursos_electronica_Black_EchidnaBlack_0_ESQ.pdf at master · EchidnaShield_Recu.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-04-00-34-57-recursos-electronica-black-echidnablack-0-esq-pdf-at-master-echidnashield-recu.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-04-00-34-57-recursos-electronica-black-echidnablack-0-esq-pdf-at-master-echidnashield-recu.png)

# Pitido

Vamos a experimentar con el buzzer, con un simple enunciado

<p class="callout info">Realizar un programa que suene una "alarma" es decir, que haga un pitido intermitente de 1 segundo</p>

La solución la tienes aquí: [https://app.arduino.cc/sketches/4c7a18bb-5012-499e-a353-6916182e728d?view-mode=preview](https://app.arduino.cc/sketches/4c7a18bb-5012-499e-a353-6916182e728d?view-mode=preview)

<iframe frameborder="0" src="https://app.arduino.cc/sketches/4c7a18bb-5012-499e-a353-6916182e728d?view-mode=preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

<p class="callout warning">Acuérdate de subir el volumen, en el potenciómetro !!</p>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/cUUkWGCcz3Q" title="pitido echidna" width="337"></iframe>

<p class="callout success">**¿Te atreves,,,?**  
A acompañar el pitido con intermitencias de luces, por ejemplo el RGB que pase de luz máxima (255,255,255) a apagado al compás del pitido, para dar el efecto real de alarma  
**Pista**: La tienes en [¿Y Makey Makey? Estoy harto que me roben las naranjas](https://libros.catedu.es/books/echidna/page/y-makey-makey-estoy-harto-que-me-roben-las-naranjas)</p>

# Servomotores

{{@12708}}

# Ángulo del servo según Joystick

Para practicar un poco los servos, vamos a realizar el siguiente enunciado

<p class="callout info">Mover el servomotor un ángulo entre 0º y 180º según los valores del Joystick en el ejeY, 0º abajo del todo, 180º arriba del todo</p>

Aquí hay que tener claro que los valores de entrada es el Joystick eje Y por lo tanto es la señal analógica A1 y sus valores van de 0 a 1023, y al servo hay que indicarle los valores en grados de 0º a 180º luego la función de mapeo es: ***val = map(val, 0, 1023, 0, 180);*** donde val va a ser una variable que ha guardado el valor del Joystick (0-1023) y que con la instrucción map lo ha traducido a 0-180.

El programa es [https://app.arduino.cc/sketches/29ac0e0b-8da8-482b-bf62-6f90a58f2459?view-mode=preview](https://app.arduino.cc/sketches/29ac0e0b-8da8-482b-bf62-6f90a58f2459?view-mode=preview)

<iframe frameborder="0" src="https://app.arduino.cc/sketches/29ac0e0b-8da8-482b-bf62-6f90a58f2459?view-mode=preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/A-wCDePVppI" title="angulo del servo según joystick Echidna" width="337"></iframe>

Si no tienes servo, puedes simularlo. En la siguiente simulación, puedes mover el potenciómetro y ver el resultado<iframe frameborder="0" height="453" marginheight="0" marginwidth="0" scrolling="no" src="https://www.tinkercad.com/embed/gl6syqapJHe?editbtn=1" width="725"></iframe>

<p class="callout success">**¿Te atreves...?**  
A realizar un programa que mueva el servo **según la inclinación de la placa**</p>

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

# ¿Y Makey Makey? Estoy harto que me roben las naranjas

¿Podemos hacer proyectos Makey Makey? Por supuesto, pero....

##### <span style="color: rgb(22, 145, 121);">**Ponlo en modo Makey Makey**</span>

Nota: Acuérdate de poner la Echidna en modo Makey Makey, y luego acuérdate de cambiarlo si vuelves a utilizar los sensores

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

##### <span style="color: rgb(22, 145, 121);">**Estoy harto que me roben las naranjas**</span>

<p class="callout info">Vamos a hacer un programa que suene una alarma (tanto sonora como luminosa en RGB) si tocamos una naranja, conectada en el terminal Makey Makey A0</p>

La solución la tienes aquí : <span style="color: rgb(0, 0, 0);">[https://app.arduino.cc/sketches/b043d527-bf50-476a-ac61-c537d820f261?view-mode=preview](https://app.arduino.cc/sketches/b043d527-bf50-476a-ac61-c537d820f261?view-mode=preview)</span>

<iframe frameborder="0" src="https://app.arduino.cc/sketches/b043d527-bf50-476a-ac61-c537d820f261?view-mode=preview?embed" style="height: 510px; width: 100%; margin: 10px 0;"></iframe>

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="599" src="https://www.youtube.com/embed/DoOtR7O7Pug" title="Estoy harto que me roben las naranjas. Proyecto Echidna" width="337"></iframe>

.

##### <span style="color: rgb(22, 145, 121);">**¿Por qué no va 100% bien?**</span>

Porque **no estamos tocando la masa del Echidna**. Si con la otra mano estuviésemos tocando con un cable la masa del Echidna, entonces iría perfecto:

[![2025-01-04 12_09_03-Echidna Black - Echidna Educacion.png](https://libros.catedu.es/uploads/images/gallery/2025-01/scaled-1680-/2025-01-04-12-09-03-echidna-black-echidna-educacion.png)](https://libros.catedu.es/uploads/images/gallery/2025-01/2025-01-04-12-09-03-echidna-black-echidna-educacion.png)

**P: ¿Por qué funciona? Funciona en el primer toque y luego no ¿Por qué?**  
R: La primera vez que tocamos la naranja se descarga nuestra electricidad estática y lo lee el terminal A0 del Echina, por lo que sube su valor, luego ya baja.

Esto lo puedes comprobar leyendo los valores del puerto serie, si te fijas en el siguiente vídeo, al tocar con el dedo, sube a 195, 158 pero luego cuando se ha descargado la electricidad, ya baja él sólo.

Si con otra mano tocase la masa, no pasaría eso.

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

<p class="callout success">**¿Te atreverías a hacer un piano con bananas ? [https://libros.catedu.es/books/echidna/page/montaje-11-piano](https://libros.catedu.es/books/echidna/page/montaje-11-piano)**</p>

# Bluetooth I Un poco de teoría

{{@7221}}

# Bluetooth II APP Serial Bluetooth Terminal

{{@13598}}

# Bluetooth III El HC06

{{@13780}}

# Bluetooth IV programa

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

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

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

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

```
/*
https://libros.catedu.es/books/echidna
*/
#include <SoftwareSerial.h>
#include <Arduino.h>

SoftwareSerial BT(0,1);
char letra = 0;

void setup() {
  pinMode(13,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(A5,INPUT);
  BT.begin(9600);
  digitalWrite(13,0);
  digitalWrite(12,0);
}

void loop() {
  if(BT.available() > 0){
        letra = BT.read();
        if(letra == 'R'){
          digitalWrite(13,1);
          digitalWrite(12,0);

        }
        if(letra == 'A'){
          digitalWrite(13,0);
          digitalWrite(12,1);

        }
        if(letra == 'L'){
          for(int count2=0;count2<10;count2++){
            BT.write(map(analogRead(A5), 1, 900, 48, 57));
            delay(1000);
          }

        }
  }

}

```

<p class="callout warning"><span style="color: rgb(0, 0, 0);">**PRECAUCIONES**   
- En Arduino IDE pon placa ARDUINO UNO  
- Quita el HC06 a la hora de subir el código  
- Una vez subido ya puedes poner el HC06 y probar </span></p>

{{@5888#bkmrk-cu%C3%81nto-hay-que-mapea}}

{{@5888#bkmrk-valor-ascii-caracter}}

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

<iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen="allowfullscreen" frameborder="0" height="874" src="https://www.youtube.com/embed/g1jR_YQzg84" title="BLUETOOTH MBLOCK Y ECHIDNA" width="492"></iframe>

# PARA SABER MÁS

- **MANUAL ONLINE OFICIAL ECHIDNA BLACK v2**
    - [https://echidna.es/manual/](https://echidna.es/manual/)
- **RECURSOS** [https://github.com/EchidnaEducacion/recursos](https://github.com/EchidnaEducacion/recursos) tienes ❤️❤️❤️❤️[![2025-11-28 19_14_09-WhatsApp.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-28-19-14-09-whatsapp.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-28-19-14-09-whatsapp.png)
- **MANUAL PDF EchidnaBlack <sup>2</sup> la versión 2 y EchidnaML** [Manual EchidnaBlack y EchidnaML.pdf](https://libros.catedu.es/attachments/246)  
    excelente manual de los creadores y con la última versión de Echidna ❤️❤️❤️❤️ [![2025-11-29 08_32_47-Manual EchidnaBlack y EchidnaML - PDF-XChange Viewer.png](https://libros.catedu.es/uploads/images/gallery/2025-11/scaled-1680-/2025-11-29-08-32-47-manual-echidnablack-y-echidnaml-pdf-xchange-viewer.png)](https://libros.catedu.es/uploads/images/gallery/2025-11/2025-11-29-08-32-47-manual-echidnablack-y-echidnaml-pdf-xchange-viewer.png)

# Muro

<div class="padlet-embed" id="bkmrk-" style="border:1px solid rgba(0,0,0,0.1);border-radius:2px;box-sizing:border-box;overflow:hidden;position:relative;width:100%;background:#F4F4F4"><iframe frameborder="0" src="https://padlet.com/embed/9wfej502prxu" style="width:100%;height:608px;display:block;padding:0;margin:0"></iframe>

<div style="padding:8px;text-align:right;margin:0;">[![Hecho con Padlet](https://resources.padletcdn.com/assets/made_with_padlet.png)](https://padlet.com?ref=embed)</div></div>

# Créditos

- 2018 Contenidos iniciales con mBlock3 por [CATEDU](https://catedu.es) (Javier Quintana Peiró).
- 2024 Revisión a la versión mBlock5 por [CATEDU](https://catedu.es) (Javier Quintana Peiró).
- 2025: Añadido ECHIDNA SCRATCH e INTELIGENCIA ARTIFICIAL y CÓDIGO por [CATEDU](https://catedu.es) (Javier Quintana Peiró).
- Imágenes de Echidna y capturas: [http://echidna.es/](http://echidna.es/) licencia CC-BY-SA 
    - Autores Jorge Lobo, Xabier Rosas, Jose Pujol, Juan David Rodríguez [https://echidna.es/quienes-somos/](https://echidna.es/quienes-somos/)
- Proyecto maqueta [en Servo con IA](https://libros.catedu.es/books/echidna/page/montaje-16-servo-con-ia) es de https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/ licencia CC-BY-SA por Jorge Lobo 29 mayo, 2021

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)