Echidna Black2

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 Black2

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

2026-10-08 13_31_47-Bandeja de entrada - jjquintana@educa.aragon.es - Mozilla Thunderbird.png

Fuente Echidna.es

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

Fuente https://echidna.es/

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

Tenemos un grupo Telegram Robótica Educativa en Aragón, https://t.me/roboticaeducativaaragon

Lenguajes de programación

Echidna = Arduino se puede programar 

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

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

Tenemos un grupo Telegram Robótica Educativa en Aragón, https://t.me/roboticaeducativaaragon

Robótica y accesibilidad

1.- Introducción

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

Software libre

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) 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 para entender mejor el concepto.

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.

2.- ARDUINO o LA ROBÓTICA ACCESIBLE

Arduino es una plataforma de hardware y software libre.

Hardware libre

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 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.

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

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, 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

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.

Filosofía del Arduino ver vídeo

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

Para entender bien la filosofía de Arduino y  el hardware libre, os recomendamos este documental de 30 minutos. Arduino the Documentary

Scratch: software libre para el desarrollo del pensamiento computacional

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

3. BBC micro:bit y la Teoría del Cambio

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.webpTarjeta BBC micro:bit V1. Fuente: 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. La fundación basa sus actuaciones en su Teoría del Cambio,

Teoría del cambio y más sobre microbit

Teoría del cambio puede resumirse en tres principios:

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

Uno de los objetivos de la Micro:bit Educational Foundation es llegar a 100 millones de escolares en todo el mundo.

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.

MakeCode.pngCaptura de pantalla del editor MakeCode, 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, creada por Python Software Foundation, otra organización sin ánimo de lucro.

MicroCode 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.

Versiones y características de micro:bit

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:

4.- LA IMPORTANCIA DEL OPEN SOURCE / CÓDIGO ABIERTO EN EDUCACIÓN

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:

Valores GNU
 Compartir

   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

     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  que toma decisiones unilaterales que nadie más puede cambiar.

Independencia

      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

        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

        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

        Estable, seguro y fácilmente instalable, el software libre ofrece una amplia gama de soluciones para la educación.

Para saber más

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:

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.



1. Cómo utilizar Echidna

1. Cómo utilizar Echidna

¿Cómo utilizar Echidna?

En este tema veremos:

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

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 pero tienes que tener los sensores y actuadores correspondientes. 
No puedes hacer los programas de Makey Makey pues eso lo tiene Echidna pero no Arduino

Ver 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

¿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/

1. Cómo utilizar Echidna

Software del Arduino

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.

Para programar Echidna de forma normal, tienes que saber:

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.

Tipos de lenguajes

Si quieres saber más detalles y posibilidades, aquí tienes unos conocimientos más avanzados

Las placas electrónicas educativas (Echidna, Micro:bit, Arduino, ESP32 ...)  se programan mediante varias opciones :


OPCIÓN LENGUAJE GRÁFICO POR BLOQUES

Recomendado para primaria. Tenemos muchas posibilidades de lenguajes gráficos. Destacamos dos:

Otros softwares para programar con bloques

EN VIVO ¿Qué es eso?                                                                                                                                                       
Existe una posibilidad de utilizar la placa "en vivo" frente a "cargar" el programa en la placa.
Es decir, interactuando con el ordenador. El programa está en el PC. En la placa hay un firmware que le dice que este a las órdenes del PC.  De esta manera podemos por ejemplo:
     - Enviar órdenes desde el ordenador a la placa.
                      Por ejemplo que al pulsar la tecla espacio que se encienda el led D13 
    - Enviar información desde la placa al ordenador
                  Por ejemplo que muestre por pantalla nos muestre la cantidad de luz, que registra el sensor LDR, etc...
Que nosotros sepamos, estos programas permiten la programación en vivo :
               - mBlock placas: Arduino, Microbit, Raspberry Pi, ... robots de Makeblock: mBot, Cyberpi...
                -EchidnaScratch CURSO DE ECHIDNA
                -Microblocks 
VENTAJAS LA PROGRAMACIÓN EN VIVO PERMITE MUCHO JUEGO Y POSIBILIDADES A LA HORA DE ELABORAR PROYECTOS
INCONVENIENTES: Necesitas el ordenador encendido y conectado al robot.

TAMBIÉN ES EN VIVO PERO ....
Hay otros softwares que técnicamente trabajan en vivo, es decir, que el programa se ejecuta desde el ordenador, no se ejecuta en la placa, son :
- Snap4Arduino para placas Arduino
- Picobriks blocks para Picobrick board
Pero no permiten trabajar utilizando los elementos del ordenador (teclado, webcam, pantalla, sprite o objetos,,,)

Es importante que entiendas que para trabajar en vivo, la placa tiene que tener cargado un "firmware" para que interactúe con el ordenador.

P: ¿Qué es eso de "firmware"?
R: No es más que un software que se graba en los chips de la placa.
P ¿Y por qué se llama así, y no se llama software o programa y en paz?
R: Digamos que como se graba en los chips, es un medio camino entre software y hardware, para diferenciarlo del software habitual.

EN CARGA ¿Qué es eso?                                                                                                                                                       
Simplemente el programa que estas haciendo se carga en la placa
VENTAJAS: Eres independiente del ordenador, tu robot funciona independiente
DESVENTAJAS Pierdes todas las posibilidades de utilizar los recursos de un ordenador, teclado, pantalla, webcam, altavoces...

Es importante que si cargas tu programa en la placa, pierdes lo que había antes
Es decir, si quieres volver a trabajar EN VIVO tienes que cargar el firmware correspondiente.

OPCIÓN LENGUAJE POR CÓDIGO

Recomendable a partir de secundaria.

LENGUAJE POR CÓDIGO ARDUINO IDE

Es un lenguaje basado en Wiring y permite la programación del Arduino en un entorno de desarrollo (basado en Processing). El programa se llama ARDUINO IDE y se puede descargar desde la página oficial de Arduino: https://www.arduino.cc/en/software.

Hay otra posibilidad que es utilizarlo online, con la ventaja de tener tus proyectos "en la nube" y no depender del equipo. OJO, TIENES QUE TENER INSTALADO EL SOFTWARE CREATE AGENT
https://create.arduino.cc/getting-started/plugin/welcome

arduinoide.png

En los cursos de CATEDU se ha utilizado el lenguaje por código empezando desde cero en:

Recomendamos estas hojas resumen si vas a trabajar con código:

LENGUAJE POR CÓDIGO PYTHON

Es un lenguaje más amigable que ArduinoIDE y tiene muchos campos de aplicación aparte de la robótica

VENTAJAS E INCONVENIENTES 
LENGUAJE GRÁFICO POR BLOQUES vs CÓDIGO

El lenguaje gráfico por bloques es un lenguaje sencillo de utilizar, nos evita tener en cuenta muchas librerías y cálculos.

Otra ventaja, es que el lenguaje por bloques es el único que permite programación "en vivo"

Por ejemplo, la instrucción leer valor distancia el sensor ultrasonidos, mediante programación por bloques es 

leer-us.jpg

mientras que en código es

double distancia;

double fnc_ultrasonic_distance(int _t, int _e){
	unsigned long dur=0;
	digitalWrite(_t, LOW);
	delayMicroseconds(5);
	digitalWrite(_t, HIGH);
	delayMicroseconds(10);
	digitalWrite(_t, LOW);
	dur = pulseIn(_e, HIGH, 18000);  
    // devuelve cuanto tarda el pulso alto en microseg; 18000 es el tiempo a esperar limite
	if(dur==0)return 999.0;
	return (dur/57);
    // la velocidad del sonido es 344m/s = 34400 cm/seg = 0,0344 cm/microseg
   // como v=e/t luego e = v*t y como cuenta la ida y la vuelta distancia = v*t/2
   // luego distancia = 0,0344/2 * dur = dur/57 
}

void setup()
{
  	pinMode(6, OUTPUT);
	pinMode(5, INPUT);

}


void loop()
{

  	distancia = fnc_ultrasonic_distance(6,5);

}

Como se puede ver en código, tiene que calcular la distancia haciendo cálculos del tiempo de rebote del eco, mientras que el gráfico es sumamente sencillo y se centra en el objetivo del algoritmo a crear, no en lo accesorio. Esto hace que un lenguaje gráfico por bloques se puede aplicar desde los 8 años.

Por otra parte, el lenguaje código tiene todo el potencial, es decir, no todo está en los lenguajes gráficos. Si se quiere cosas más avanzadas, hay que recurrir al código.

Un lenguaje gráfico se convierte en lenguaje código, pero al revés no se puede, debido a que el código es más depurado y no tiene la información necesaria para volver a su origen en bloques, ya lo has visto con el anterior ejemplo, el código tiene más información.

¿No te lo crees? Haz la prueba, métete en https://www.tinkercad.com/ crea un programa con bloques, dale a la pestaña de código y te aparecerá una advertencia que perderás el programa con bloques ! no puedes volver atrás!

Curiosamente, tiene una opción bloques+código que traduce cada bloque con un código, es decir, traduce cada bloque sin perder información, sólo de esa manera se puede pasar de bloques a código y viceversa.

2024-09-23 10_51_49-Circuit design PIN0-CORE-CREW - Tinkercad.png

Hay herramientas para pasar de bloques a código pero no al revés

bloques-codigo.png
Imagen Federico Coca Notas sobre ESP32 STEAMakers CC-BY-SA

El lenguaje código se traduce en lenguaje máquina (ceros y unos) entendible para el microprocesador, pero al revés no se puede.

En este vídeo, en mi opinión se olvida de mBlock, Snap4Arduino, S4A pero puedes ver un vistazo de los diferentes editores

OPCIÓN SIMULACIÓN                                    

Incluimos dentro del apartado de Software los diferentes programas que hay para simular placas electrónicas como Arduino, ESP32, Micro:bit etc...

Tinkercad

Esta herramienta https://www.tinkercad.com aparece en el Curso Arduino con código  en la práctica Comunicación entre dos Arduinos, pero también es una plataforma que sirve para hacer los diseños de elementos 3D, ver curso Impresión 3D con Tinkercad

Tiene la ventaja que es aplicación online, muy visual y buscan un reflejo de la práctica real, además de estar la herramienta adaptada al aula (gestión de alumnos y proyectos). Como  desventajas podemos decir que no tiene mucha variedad de componentes electrónicos y la simulación es algo lenta.

Además permite embeber, pruébalo !!! 😍😍😍 Pulsa Iniciar simulación y luego pulsa el botón A de cualquiera de los dos micro:bits

Wokwi

Si Tinkercad se queda corto, puedes probar esta plataforma https://wokwi.com/ con muchas posibilidades. Es online y puede trabajar con multitud de placas: ArduinoUno, ESP32, Raspberry,,,,
Como única desventaja que encontramos, es que echamos de menos la realidad de Tinkercad, por ejemplo no puedes poner una placa protoboard para realizar las conexiones, pero a cambio se gana simplicidad de cableado.

2022-12-05 10_14_42-Knob.ino - Wokwi Arduino and ESP32 Simulator.png

UnoArduSim

Es una aplicación local.  UnoArduSim además es una aplicación portable fácil de instalar y con los elementos de leds, motores servos ya preparados, ideal para ejemplos sencillos y para examinar señales y no depender de Internet, pero no es tan versátil.

SIMULIDE

En https://simulide.com/ podemos encontrar un programa local de software libre genérico para electrónica, incluido Arduino. En esta captura se puede ver uno de los ejemplos que incorpora el programa:
2025-02-07 16_09_42-DesktopWindowXamlSource.png

OPCIÓN SÓLO DIBUJAR


1. Cómo utilizar Echidna

Sensores

Sensores básico para Echidna

Para trabajar con Echidna sólo tienes que saber:

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

Recuerda que al programar EN VIVO tienes también las entradas del ordenador, por ejemplo el ratón, teclado...

Sensores avanzados Si quieres saber más sobre los sensores, que otros tipos hay (para conectar en I/O sensores externos), te recomendamos leer esta página

1. Cómo utilizar Echidna

Actuadores y otras salidas

Actuadores básico

Para manejar el Echidna tienes que saber:

No hay salidas analógicas y no hay salidas en modo Makey Makey

Recuerda que al programar EN VIVO tienes también las salidas del ordenador: La pantalla (los objetos o sprites de tus programas), los altavoces...

Actuadores avanzado 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). Te aconsejamos leer esta página


1. Cómo utilizar Echidna

¿Qué es Echidna?

Ahora sí: ¿Qué es Echidna?

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.

Componentes.png Source: Web oficial Echidna- documentación

2025-12-03 22_08_02-Greenshot.png
Fuente Echidna.es captura de Echidna black v2

Te recomendamos visitar
- https://echidna.es/
Twitter :
- https://x.com/EchidnaSTEAM?s=20

¿Estás preparado? adelante !!!

Te recomendamos visitar
- https://echidna.es/
Twitter :
- https://x.com/EchidnaSTEAM?s=20

Echidna Black (modelo 3D GmedranoTIC) by GmedranoTIC on Sketchfab

1. Cómo utilizar Echidna

Cómo se programan las Echidnas

Da igual si tienes una Echida Shield que una Echidna Black las dos se programan igual

Tenemos dos opciones:

Si no sabes lo que significa en vivo o cargar es que no has leído Software del Arduino

EN ESTE CURSO VAMOS A PROGRAMAR EN BLOQUES CON EL PROGRAMA ECHIDNA (tipo Scratch)

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

1. Cómo utilizar Echidna

MONTAJE 1 SEMAFORO

Da igual si tienes una Echida Shield que una Echidna Black las dos se programan igual

Instalación del programa

Entramos en 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

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

Objeto semáforo

Creamos un objeto semáforo, (exactamente igual que con mBlock) con tres disfraces. 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
2024-11-28 08_50_09-mBlock Block-Based IDE- Coding for Beginners.png

Como no existen semáforos, no pasa nada, creamos uno en Paint

2024-11-28 08_51_09-mBlock Block-Based IDE- Coding for Beginners.png

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

2024-11-28 08_52_42-mBlock Block-Based IDE- Coding for Beginners.png

Vamos duplicando el disfraz y hacemos los correspondientes AMARILLO y VERDE

2024-11-28 23_03_42-mBlock Block-Based IDE- Coding for Beginners.png

Es muy fácil :

2024-11-28 23_05_27-mBlock Block-Based IDE- Coding for Beginners.png

Código

 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

Si se hace el programa el en mismo objeto semáforo, se puede hacer el programa sin la instrucción 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

2024-11-27 23_43_58-EchidnaML.png

Resultado

1. Cómo utilizar Echidna

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

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)

2024-12-03 08_19_41-EchidnaML.png

¿Cómo puedo restaurar el FIRMATA en el Arduino?

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

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

¿QUÉ PLACA - BOARD TENGO QUE ELEGIR? 
¿Y EL PUERTO?

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.

LIBRERIA FIRMATA

Nos vamos a herramientas - administrar librerías

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

PROGRAMA EJEMPLO STANDARDFIRMATA

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

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

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

Si aun así, NO LO DETECTA... cambiar de USB 😁 funciona !!

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

¿Qué es eso de Firmata?

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/

StandarFirmata-Echidna-Scratch.jpg
Fuente https://echidna.es/a-programar/instalar-standardfirmata/

1. Cómo utilizar Echidna

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/

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
Fuente CC-BY-SA https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/

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)

Recomendamos en el caso de problemas: INSTALAR ARDUINO IDE

Fuente https://echidna.es/hardware/echidnablack/puesta-en-marcha-echidna-black/

Si los problemas insisten, instalar el Driver

– Driver de comunicación:

Echidna Black utiliza el chip CH430E, por lo que dependiendo del SO necesitarás instalar el controlador “Driver CH341”

– 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.

1. Cómo utilizar Echidna

Alimentación del Echidna

AlimentacionBlack.png
CC-BY-SA Fuente: https://echidna.es/

Alimentación USB recomendado:

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

Aquí vemos un ejemplo de un echidna que está alimentado con un PowerBank y esta ejecutando un programa ¿Cómo puede ser eso?

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

En el EchidnaBlack tiene integrado el puerto usb para alimentarlo

2025-12-03 22_22_03-Presentación1 - PowerPoint.png

2024-11-29 08_49_40-Inicio - Echidna Educacion.png

OJO El jumper que tiene arriba a la izquierda tenerlo conectado a 5V:

No utilizar la alimentación 5V cuando los servos o dispositivos a controlar consuman más de 300mA, para no sobrepasar el regulador del Arduino, en este caso utilizar la alimentación externa:

Alimentación externa:

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/

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.

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:

2024-12-16 13_33_22-Alimentación EchidnaBlack - Echidna Educacion.pngCC-BY-SA fuente https://echidna.es/hardware/echidnablack/alimentacion-echidnablack/

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.

1. Cómo utilizar Echidna

Tengo Arduino ¿Puedo hacer los programas SIN ECHIDNA ?

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 pero tienes que tener los sensores y actuadores correspondientes. 
No puedes hacer los programas de Makey Makey pues eso lo tiene Echidna pero no Arduino

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

¿Cómo?

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

Componentes.png

¿No tengo que instalar ningún firmware al Arduino?

Si, por supuesto, igual que en Echidna

Vale... hazme un ejemplo de programa normal

Ok, pues el mismo ejemplo que hemos visto en el semáforo pero SIN ECHIDNA

Harware
Software

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

No me lo creo, a ver...

Mira

Vaaaale.... ¿Y con Inteligencia Artificial?

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

2024-12-08 09_50_29-EchidnaML.png

y con ese modelo creamos un programa que :

Hardware

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

Software

Igual que antes pero con el modelo IA creado

2025-01-24 11_55_51-EchidnaML.png
2025-01-24 11_56_23-EchidnaML.png
2025-01-24 11_56_45-EchidnaML.png

El resultado 

2. Salidas de Echidna

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

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

2. Salidas de Echidna

MONTAJE 2 Luces psicodélicas

LED RGB

Ya hemos visto las luces LED con el semáforo, ahora vamos a ver el LED RGB

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? 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:

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.

PROPUESTA MONTAJE 2 LUCES PSICODÉLICAS

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.

Solución con EchinaScratch

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

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

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

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

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

El resultado

Lo tienes en MONTAJE2-LUCESPSICODELICAS.sb3 dentro del repositorio https://github.com/JavierQuintana/Echidna

2. Salidas de Echidna

MONTAJE 3 Timbre

Enunciado

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

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

Solución con EchidnaScratch

2024-12-03 19_33_07-EchidnaML.png

El programa lo tienes en el repositorio https://github.com/JavierQuintana/Echidna

Esta es la equivalencia entre notas y la nomenclatura Midi :

NOTA MIDI
A LA
B SI
C DO
D RE
E MI
F FA
G SOL

3. Entradas de Echidna

3. Entradas de Echidna

Otra vez acuérdate

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

Nota: Si has hecho el anterior programa Grabar a Arduino, recuerda dejarlo preparado para que haga caso a mBlock: Conectar-Actualizar Firmware.

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

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

3. Entradas de 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.

MONTAJE4-ENCENDIDOAPAGADO

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

Solución con EchidnaScratch

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

El código :

2024-12-03 13_38_56-EchidnaML.png

El fichero lo tienes en el Github : https://github.com/JavierQuintana/Echidna

3. Entradas de Echidna

MONTAJE 4-ENCENDIDOAPAGADO-AVANZADO

MONTAJE4-ENCENDIDOAPAGADO-AVANZADO

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.

Solución EchidnaShield

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

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.

FIJATE 👁️👁️ que la variable ENCENDIDO se cambia a 1 o a 0 para que refleje el estado en el que ha quedado el sistema

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
Manual EchidnaBlack2 y EchidnaML www.echidna.es CC-BY-SA

2024-12-03 13_58_18-EchidnaML.png

2024-12-03 13_58_49-EchidnaML.png

El programa lo tienes en : https://github.com/JavierQuintana/Echidna

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.

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).

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.

3. Entradas de Echidna

MONTAJE 5 LDR

¿Qué es un LDR?

Vamos a la Wikipedia:

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. More at Wikipedia (ES)

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/ los valores van desde 20 en ausencia de luz, hasta 1.000 con mucha luz.

Comprobar los límites

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

¿Qué vamos a hacer?

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 

Con estos valores vamos a realizar un programa que

MONTAJE 5 Semáforo luminoso

RETO Vamos a reutilizar esfuerzos: reutilizar el semáforo visto pero vamos a hacer que se iluminen los colores según la luz:

Semáforo Luz
Todo apagado Mucha oscuridad
Rojo Oscuridad
Amarillo Luz normal
Verde Mucha luz

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

Semáforo Luz Límite inferior Límite superior
Todo apagado Mucha oscuridad --- 199
Rojo Oscuridad 200 499
Amarillo Luz normal 500 799
Verde Mucha luz 800 ---
Solución con EchidnaScratch

2024-12-05 09_43_50-Presentación1 - PowerPoint.png

Lo puedes encontrar en en este repositorio: https://github.com/JavierQuintana/Echidna

Reto

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

echidna-medirluz4.png

El resultado lo puedes ver en este vídeo:

3. Entradas de Echidna

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

Vamos a hacer un semáforo que mida la intensidad del sonido, verde si es poco, y sube hasta rojo cuando es elevado

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

El programa en EchidnaScratch es :

2024-12-08 13_37_26-EchidnaML.png

Hemos simulado el sonido soplando en el micro :

¿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)

3. Entradas de Echidna

MONTAJE 6 Piano luminoso

Enunciado

Realizar un programa que suene una nota diferente según la luz

Solución en EchidnaScratch

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

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

3. Entradas de Echidna

MONTAJE 7 Telesketch

¿Qué es el Joystick?

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.

LAS COSAS CLARAS: IGUAL DA ESTA INSTRUCCIÓN
2025-04-30 19_54_37-EchidnaML.png
QUE ESTA: ( poniendo A0) 
2025-11-22 23_41_08-EchidnaML.png
Preferimos la primera pues EchidnaML se adapta a la versión de la placa
 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

Reto Telesketch

Si no sabes lo que es esto, no has tenido infancia 😊😁

TELSKET.jpg

Vamos a realizar el mismo ejemplo que este vídeo de Jorge Lobo pero en vez de realizado en Snap4Arduino lo vamos a hacer en EchidnaScratch y en mBlock.

Solución con EchidnaScratch

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

Simplemente vamos a considerar estas condiciones:

¿Lápiz ? ¿Qué lápiz?

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

2024-12-05 15_49_35-EchidnaML.png

E instalamos esta extensión

2024-12-05 15_50_03-EchidnaML.png

Y se instalan nuevas instrucciones para dibujar

2024-12-05 15_51_36-EchidnaML.png

Código con EchidnaScratch

Recomendamos cambiar el sprite del gato por otro más apropiado, por ejemplo el lápiz y bajarlo a un tamaño 15

2024-12-05 15_54_22-EchidnaML.png

El programa :

2025-04-30 20_06_40-EchidnaML.png

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

3. Entradas de Echidna

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 tiene un repositorio de millones de proyectos, podemos seleccionar uno, y adaptarlo a nuestra simpática Echidna.

Vamos a copiar un proyecto ALIENS INVASION nave espacial con nuestro JOYSTICK de la Echidna.

1.- IMPORTANDO PROYECTO EXTERNO SCRATCH A EchidnaScratch o mBlock

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

2025-11-22 23_13_30-EchidnaML.png

Entramos en SEE INSIDE

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

Nos vamos al programa ECHIDNA ML y cargamos el programa descargado

2025-07-01 20_42_13-EchidnaML.png

2.- Hackear el código para que funcione la nave con el joystick

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

2025-11-22 23_19_05-EchidnaML.png

Creamos dos variables :

Y cambiamos el código de mover la nave :

2025-11-22 23_27_17-EchidnaML.png

3.- QUE DISPARE APRETANDO EL BOTÓN SL

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

2025-11-22 23_31_09-EchidnaML.png

Queda pues

2025-11-22 23_33_12-EchidnaML.png

El resultado

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

3. Entradas de Echidna

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/


VALOR MÍNIMO VALOR REPOSO VALOR MÁXIMO
JOYSTICK 0 512 1.024
ACELERÓMETRO 285 359 428

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

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


4. Modo Makey Makey

4. Modo Makey Makey

Modo Makey makey

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

selector_modos-black-1.png

ATENCIÓN:
EN MODO MAKEY MAKEY PIERDES TODA CONEXIÓN CON LOS SENSORES DE LA PLACA menos claro, los de Mky Mky

2024-12-16 13_47_40-Modo Sensores modo MkMk Black - Echidna Educacion.png
Fuente CC-BY-SA https://echidna.es/

 

4. Modo Makey Makey

¿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:

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

Tiene las siguientes entradas:

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

Nota:

Aquí tienes un curso de manejo de la Makey Makey original con el curso Scractch avanzado y Makey Makey.

4. Modo Makey Makey

Programas usando UMBRAL

Los programas tendrán la siguiente estructura básica

CON ECHIDNA SCRATCH

PINES ANALOGICOS A0, A1, A2, A3, A4, A5
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

PINES DIGITALES D2, D3

La estructura es la siguiente

2024-12-07 20_02_19-EchidnaML.png

COMO PUEDES VER NO HACE FALTA LA VARIABLE UMBRAL

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.

CON MBLOCK

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:

En el dispositivo ARDUINO UNO

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

En los objetos

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

Resultado

4. Modo Makey Makey

MONTAJE 11 Piano

Con Echidna Scratch

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

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

El resultado 

El programa lo tienes en este repositorio: https://github.com/JavierQuintana/Echidna

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

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

Con mBlock

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):

Nota americana C4 D4 E4 F4 G4 A4 B4 C5
Nota Europea Do Re Mi Fa Sol La Si Do
Makey A0 A1 A2 A3 A4 A5 D2 D3

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.

Solución


El programa es muy sencillo pero repetitivo:



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

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:

 

Esta noche prepara un karaoke con tus amigos.

4. Modo Makey Makey

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...

Una pega: No dura nada, a los pocos días se endurece o se pudre.

Propuesta

Que un sprite se mueva según unos botones hechos de plastilina:

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 ⇐

Solución con EchidnaScratch

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 :

2024-12-07 23_00_48-EchidnaML.png

El archivo lo tienes en este repositorio: https://github.com/JavierQuintana/Echidna

Aunque en el vídeo está hecho con mBlock3, el programa y el resultado es el mismo que en EchidnaScratch

Solución con mBlock

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




El umbral se ha cambiado según la sensibilidad del botón.

OTROS RETOS

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

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

image.png

Las posibilidades son muchas, cuelga tus experiencias en este muro

Hecho con Padlet

5. Inteligencia Artificial

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
CC-BY-SA Fuente https://echidna.es/a-programar/echidnaml/

La inteligencia artificial se refiere al conjunto de algoritmos realizan tareas complejas, que son capaces de realizar procedimientos que imitan el funcionamiento de la mente, como son aprender y tomar decisiones.

En el fondo la IA son tomas de decisiones: Un sumatorio de muchos función sigmoide asociadas a variable de entrada que cuanto más datos, más empinada y por lo tanto más certera es su decisión (salida).

IA-FUNCIONSERPIENTE.png

Por ejemplo, le pedimos a un robot con IA  que tomando de muestra la temperatura corporal, nos diga si estamos enfermos o no.

Los puntos son las muestras que le pasamos para que aprenda

5. Inteligencia Artificial

Tipos IA

Viendo esta clasificación ¿Cuál es el tipo de IA que se usa en EchidnaScratch ?

Muy fácil: ML Aprendizaje automático supervisado

ML : APRENDIZAJE AUTOMATICO O MACHINE LEARNING

Aquí los algoritmos aprenden a partir de datos, y ellos buscan patrones para identificar. Cuanto más datos, mejores resultados.

El principio es básico. Queremos diferenciar silla mesa: Analiza datos, localiza patrones (cuatro patas, algo común, el tamaño y forma, patrones que diferencian como el respaldo....) con esas características, puede realizar un entrenamiento, y por lo tanto esta preparado para realizar predicciones.

Hay varios tipos de ML:

RL : APRENDIZAJE REFORZADO O REINFORCEMENT LEARNING

Es un modelo que busca la optimización. Utiliza resultados anteriores e intenta mejorarlos. Para buscar esto, se definen estados con unos parámetros que implican premio o penalización. La máquina busca soluciones y acciones para buscar los premios y huir de las penalizaciones.

DL : APRENDIZAJE PROFUNDO O DEEP LEARNING

Es un subconjunto del ML no supervisado, Se crea una red neuronal organizadas en capas, cada capa especializada, por ejemplo la primera de entrada recoge los datos, las intermedias, ya ocultas, identifican patrones y la última, la salida que recoge la información procesada  anteriores, la que toma las decisiones.

PLN : PROCESAMIENTO DE LENGUAJE NATURAL

Utiliza conceptos de DL y ML para comprender el lenguaje humano. Una aplicación son los chatbots. Que pueden ser:

EJEMPLOS 

LEARNING ML cabeza_genio.png
 https://web.learningml.org/en/home/ 

ML: MACHINE LEARNING FOR KIDS 2024-06-08 13_08_30-Machine Learning for Kids logo.png

https://machinelearningforkids.co.uk/#!/welcome

Ver nuestro tutorial en https://libros.catedu.es/books/robotica-educativa-con-mbot/page/maquina-educable-con-machine-learning-for-kids-y-scratch

DL REDES NEURONALES : QUICKDRAW 2024-06-08 13_22_52-quick draw - Buscar con Google.png

https://quickdraw.withgoogle.com/ Es un videojuego donde se ve claramente como se va perfilando las decisiones en forma de árbol y como la etapa final va reconociendo tu dibujo. En esta red, la primera etapa de la red neuronal son trazos que dibujas, y las neuronas intermedias son fruto de una extensa base de datos de dibujos. La última etapa es la decisión basada en las anteriores neuronas.

PRUEBALO ES SUPERDIVERTIDO, INCLUSO EN UN MÓVIL 
qr_img.png

PLN: CHATGPT COMO FUNCIONA

DL CREA TU PEQUEÑA RED NEURONAL CON PYTHON

DL: GOOGLE DEEPMIND
 Google deepmind desarrolló una red neuronal para aprender a jugar videojuegos, y ganó a varios campeones humanos en videojuegos complejos (de los que inicialmente la máquina desconocía las reglas). Puedes ver en https://deepmind.google/ los diferentes proyectos actuales.

5. Inteligencia Artificial

Robotica e IA

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

Nomenclatura

Recomendamos utilizar NoPT ML pues son mucho más educativos.
Además recomendamos no 🛜, así no se envían datos a ningún servidor.
                Esto es importante en los casos 🎞️🔊por protección de datos.
Marcamos con ❤️ nuestros favoritos.

Hardware
Software
5. Inteligencia Artificial

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/

Tiene la gran ventaja que esta integrado con Echidna Scratch POR LO QUE EL MODELO IA SE PUEDE UTILIZAR EN EL REPERTORIO DE INSTRUCCIONES

2025-07-02 08_28_54-What is Machine Learning - LML - ArtificiaI Intelligence made easy.png
CC-BY-NC-SA https://web.learningml.org/

RECONOCIMIENTO DE TEXTOS

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

RECONOCIMIENTO DE IMAGENES

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

RECONOCIMIENTO DE NÚMEROS

Este caso no lo abordaremos pues es para casos más académicos. Si quieres conocer este modelo, consultar su manual, https://learningml.org/lml-doc/03-editor-modelos/ en el apartado de Qué son los conjuntos numéricos

MODO AVANZADO

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 https://learningml.org/lml-doc/03-editor-modelos/ en el apartado El modo avanzado de LearningML2

5. Inteligencia Artificial

MONTAJE 13 Reconocimiento de texto

Vamos a encender y apagar un objeto de luz usando texto predictivo con IA

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

Y con la clase ENCIENDE otras tantas palabras

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

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

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

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

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

El programa en este repositorio: https://github.com/JavierQuintana/Echidna

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

Mejoramos nuestro modelo pero con ayuda de ChatGPT

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 :

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

Le decimos a chatgpt 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


Otro ejemplo pero con una cerveza ;)

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

5. Inteligencia Artificial

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

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

Grabar y abrir una máquina de IA

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

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

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

Este archivo tiene los datos de entrada NO LA MÁQUINA luego si cerramos el programa y queremos abrirlo tenemos que volver a entrenarla:

2024-12-08 10_03_31-EchidnaML.png

Programa en EchidnaScratch

2024-12-08 10_09_53-Presentación1 - PowerPoint.png

Resultado

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

Recomendamos...

Ver todo el proceso en este vídeo

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

También recomendamos...

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:

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

 

5. Inteligencia Artificial

MONTAJE 14BIS RECONOCIMIENTO DE MATRÍCULAS

Vamos a desarrollar este proyecto de Jorge Lobo @Lobo_tic 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 y @_learningml_ 😃 pic.twitter.com/3Ew22WcURj

— Jorge Lobo (@lobo_tic) May 18, 2025
PRIMER PASO : MONTAJE

Ponemos un servo en D4 

FÍJATE QUE EL MARRÓN A MASA GND SIMBOLO G TAL COMO LA FOTO Y EL AMARILLO EN DATO Dx

2025-06-17 21_55_44-.png

SEGUNDO PASO : CREAR MÁQUINA IA DE RECONOCIMIENTO DE MATRICULAS
  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 ninguna matrícula, 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

Detalle del paso 3.2

2025-06-17 21_54_31-EchidnaML.png

TERCER PASO : PROGRAMAR

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

CUARTO PASO : JUGAR

5. Inteligencia Artificial

MONTAJE 14 TRIS RECONOCIMIENTO GESTOS

Podemos realizar un programa que siga los movimientos del brazo

braquioplastia.png y que el servo lo reproduzca

Haremos tres clases:

Enseñamos a la máquina

2025-11-23 10_52_08-EchidnaML.png

2025-11-23 10_53_39-EchidnaML.png

El resultado

 

6: Extensiones


6: Extensiones

Extensiones de Echidna

En la esquina superior izquierda verás tres extensiones digitales

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

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.


Nota: Acuerdate en toda esta sección de poner la Echidna en modo Sensor

¿Qué extensiones son las aconsejadas?

Lo tienes en https://echidna.es/hardware/echidnablack/complementos-echidnablack/

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

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

6: Extensiones

Servo

Servo
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
Fuente Luis Llamas CC-B-SA https://www.luisllamas.es/controlar-un-servo-con-arduino/

Cómo se conecta el servo con la Echidna

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:

2024-12-08 18_10_25-WhatsApp.png

Experimenta con el servo con EchidnaScratch !

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

SUPERFÁCIL !!!

Aprende más sobre servos en esta página de Luis Llamas.

Experimenta con el servo con mBlock

Para experimentar tienes que usar esta instrucción

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

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

6: Extensiones

Montaje 15 Servo

Montaje 15 Servo

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.

Para ello hay que tener en cuenta que:

El programa es :

montaje14-servo-codigo.png

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

El resultado es 

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

¿Te atreves..?
A realizar un programa que mueva el servo según el valor del Joystick ejeY?

6: Extensiones

Montaje 16 Servo con IA

Enunciado

Necesitamos que se reconozca un objeto entre varios de una cinta transportadora para desviarla a su destino correcto

Vamos a distinguir entre paquetes (cajas) y bolsas

Learning ML

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

2024-12-09 20_38_50-EchidnaML.png

Ecihdna Scratch

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

2024-12-09 20_49_34-EchidnaML.png

Resultado

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

No te quedes aquí, avanza !!!

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

Espantapájaros 🐦🧹controlado por IA con 🦔@EchidnaSTEAM en el stand de la gente maja de @MICROLOG_TECNO en @SIMOEDU_ 😍 pic.twitter.com/7O1fIH2xXB

— Jorge Lobo (@lobo_tic) November 19, 2024

Hemos explicado 16 montajes, ya con esto tienes roto el hielo para desarrollar proyectos con Edhidna

Proyecto maqueta domótica con servo de motor contínua y led

Este proyecto está obtenido de https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/ licencia CC-BY-SA por Jorge Lobo 29 mayo, 2021

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.

CONSTRUYENDO LA MAQUETA

EL PROYECTO

VÍDEOS

ARCHIVOS

El anterior proyecto está obtenido de https://echidna.es/2021/05/asistente-virtual-robotica-e-ia/ licencia CC-BY-SA por Jorge Lobo 29 mayo, 2021

Más proyectos en https://echidna.es/recursos/proyectos/

2024-12-10 14_07_59-.png

7 Entradas de Echidna con mapeo (avanzado)

7 Entradas de Echidna con mapeo (avanzado)

Mapeo (avanzado)

¿Qué es eso de "mapeo"?

En la jerga robótica, dicho pronto y mal pero para que se entienda, mapear significa hacer un cambio de escala

¿Cuándo se dan esas situaciones?

SITUACION A : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida digital PWM de Arduino que va de 0-255

SITUACION B : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 e interpretarlo en sus valores de voltios. Si suponemos que la placa se alimenta a 5V la variable de salida irá desde 0 a 5V

SITUACION C : Queremos leer el valor de un LDR, que tapándolo nos da 917 e iluminándolo al máximo es 1023, lo queremos copiar en una salida digital PWM, o sea que la salida va desde 0 a 255

Nota: El mínimo de 917 (puede ser otro número, es un valor experimental) es debido a que los LDR van montados en un divisor de tensión como el de la figura, y la resistencia de abajo, siempre se queda algo de tensión

2025-01-04 00_34_57-Recursos_electronica_Black_EchidnaBlack_0_ESQ.pdf at master · EchidnaShield_Recu.png

SITUACION D : Queremos según el valor de un joystick conectado a las entradas analógicas de un Arduino (esto pasa en Echidna) 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

SITUACION E: Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo acel) que va 250 a 500

SITUACION F : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida de un servo, por lo tanto lo que necesita es un ángulo que va de 0-180

SITUACION G : Idem que F pero una raspberry por lo tanto GPI va de 0-65.535

¿Cómo se consigue mapear?

Para entendernos :

Luego y tiene esta ecuación :

2025-01-08 20_03_40-Equation Editor for online mathematics - create, integrate and download.png

donde m es 

2025-01-08 20_05_18-Equation Editor for online mathematics - create, integrate and download.png

Gráficamente 

2025-01-08 20_07_29-ecuación de una recta - Buscar con Google.png

¿Una hoja de cálculo para poder hacer esos cálculos?

Sí, claro, en este enlace https://docs.google.com/spreadsheets/d/1qNbaZ2c_H1UCNhtvp2LimfWSbaGvZLVl5gJr9Wu0ifU/edit?usp=sharing dale a descargar

Rellena las casillas amarillas, y en las naranjas tienes el resultado de m y n

2025-07-01 19_26_48-MAPEO - Hojas de cálculo de Google.png

¿Me lo puedes hacer para cada situación anterior?

Si claro:

SITUACION A : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida digital PWM de Arduino que va de 0-255

SITUACION B : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 e interpretarlo en sus valores de voltios. Si suponemos que la placa se alimenta a 5V la variable de salida irá desde 0 a 5V

SITUACION C : Queremos leer el valor de un LDR, que tapándolo nos da 917 e iluminándolo al máximo es 1023, lo queremos copiar en una salida digital PWM, o sea que la salida va desde 0 a 255

SITUACION D : Queremos según el valor de un joystick conectado a las entradas analógicas de un Arduino (esto pasa en Echidna) 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

SITUACION E: Ídem pero no con el potenciómetro, sino con el acelerómetro (vamos a llamarlo acel) que va 250 a 500

SITUACION F : Queremos leer un valor de entrada analógica en un Arduino, por lo tanto va de 0-1023 y queremos que se copie en una salida de un servo, por lo tanto lo que necesita es un ángulo que va de 0-180

SITUACION G : Idem que F pero una raspberry por lo tanto GPI va de 0-65.535

7 Entradas de Echidna con mapeo (avanzado)

MONTAJE 8 Comebichos

No podemos dejar el Joystick sin hacer un videojuego !!

El siguiente RETO es: Mover un Sprite “Bat” con el Joystick para atrapar un Beetle

Solución con EchidnaScratch

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

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 algo retocadas.

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

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

Solución con mBlock


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
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

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.pngEl programa completo lo puedes descargar aquí https://planet.mblock.cc/project/projectshare/3230393

El resultado es:

Lo sé …. soy bastante malo !!

7 Entradas de Echidna con mapeo (avanzado)

MONTAJE 9 SPRITEVOLADOR

¿Qué es un acelerómetro?

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 la inclinación del mismo Echidna.

Está conectado a los pines analógicos:

Los valores van desde 250 hasta 500

MONTAJE 9 SPRITEVOLADOR

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.

El reto te lo complicamos con dos premisas:

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

A SOLUCIÓN CON ECHIDNASCRATCH

A1 Sprite PARROT moviéndose según acelerómetro

A1.1 Añadir un disfraz al PARROT de explosión. 

  1. Quitamos el sprite del gato y añadimos el sprite SUN
  2. Entramos en edición del sprite
  3. Lo tuneamos un poco para que parezca una explosión (simplemente pintar de rojo el centro)
  4. Lo exportamos
  5. Guardamos con explosion.svg

2024-12-06 08_45_02-EchidnaML.png

Ahora añadimos el Sprite PARROT y al sprite PARROT le ponemos el disfraz de explosión:

  1. Añadimos el sprite PARROT
  2. Borramos el anterior SUN ya no lo necesitamos
  3. Entramos en Edición del sprite
  4. Menú del disfraz (costume)
  5. Upload costume
  6. elegimos el fichero creado anteriormente "explosion.svg"
  7. Abrimos
  8. 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.

2024-12-06 08_55_12-EchidnaML.png

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

A1.2 Movimiento del sprite PARROT 

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

2024-12-06 09_12_19-EchidnaML.png

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, podemos sacar los valores de mapeo anteriores

A2 Sprite EDIFICIO moviéndose de derecha a izquierda

Dará sensación al sprite pájaro que está volando.

A21 Exportación de Sprites externos

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

Entramos en este proyecto FLY de scratch 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

Una vez dentro del editor EXPORTAMOS ESTOS SPRITES

2024-12-06 09_19_07-Configuración.png

Simplemente botón derecho y EXPORTAR

echidna-helicoptero2.jpg

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

A22 Importación de los Sprites externos

  1. Entramos en Añadir Sprite
  2. Upload
  3. Elegimos los ficheros exportados anteriormente en A21

2024-12-06 09_22_17-EchidnaML.png

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

A3 Muerte del PARROT

Ya lo tenemos casi, añadimos al bucle de PARROT un condicional:

2024-12-06 10_07_06-EchidnaML.png

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

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

B SOLUCIÓN CON mBlock

B1 Sprite helicóptero moviéndose según acelerómetro

B11 Añadir un disfraz al helicóptero de explosión. 

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

2.- Exporta el fichero imagen svg

echidna-helicoptero5.jpg

3.- Añade al helicóptero el disfraz 

echidna-helicoptero6.jpg

4.- Eligiendo el fichero svg exportado en el paso 3

echidna-helicoptero7.jpg

B12 Movimiento helicóptero

Vamos a hacer que helicóptero que se mueva según el acelerómetro: (Ver al final DETALLES MAPEO)

echidna-helicoptero12.jpg

En el arduino le asignamos las coordinadas a las variables globales A2 y A3

echidna-helicoptero11.jpg

B2 Solución edificio, cómo se reutiliza un sprite

B21 Exportación de un Sprites externos

Esta parte es igual que A21 luego no lo repetimos

B22 Importación de Sprites externos

Vamos a mblock e IMPORTAMOS el fichero que hemos exportado
echidna-helicoptero3.jpg

Nos importa con sus disfraces Y SU CÓDIGO

Nos queda pues esta colección de objetos

echidna-helicoptero9.jpg

B3 Solución a la muerte del helicóptero

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

El programa lo tienes aquí https://planet.mblock.cc/project/3230430

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

Detalles MAPEO verlo en la situación E de mapeo: https://libros.catedu.es/books/echidna/page/mapeo

PUEDES CAMBIAR ESTOS VALORES TESTEANDO LOS MOVIMIENTOS DEL SPRITE

7 Entradas de Echidna con mapeo (avanzado)

MONTAJE 10 MATA-ALIENS con Joystick. Hackeando código y mapeando

1.- IMPORTANDO PROYECTO EXTERNO SCRATCH A EchidnaScratch o mBlock

Entramos en SCRATCH https://scratch.mit.edu/  y buscamos ALIENS INVASION, concretamente este : https://scratch.mit.edu/projects/593781518/

2025-07-01 20_36_25-Scratch - Search.png

Entramos en SEE INSIDE

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

Nos vamos al programa ECHIDNA ML y cargamos el programa descargado

2025-07-01 20_42_13-EchidnaML.png

2.- Hackear el código para que funcione la nave con el joystick

Vamos a fijarnos en el código de la nave, si nos fijamos se mueve si se pulsan las teclas ⬅️➡️

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

3.-Un poco más, disparar con D2 SR

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

Lo vamos a cambiar por 

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

Por

2025-07-01 20_58_12-EchidnaML.png

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? 

8 Extensiones (avanzado)


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

En el caso de que tengas la ECHIDNA BLACK es lo mismo pero SIN LA PLACA ARDUINO pues la Echidna Black ya lo incorpora.

Aquí puedes ver un precio orientativo de los elementos:

8 Extensiones (avanzado)

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

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)

hay para a empezar con uno sencillo de entrada digital que es muy útil: el sensor Infrarrojos

Para ver más información de este sensor te recomendamos esta página.

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

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

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

En el panda

echidna-infrarojos2.jpg

Y el disfraz costume2 lo hemos tintado de rojo

El programa lo tienes aquí https://planet.mblock.cc/project/3232841

El resultado es:

8 Extensiones (avanzado)

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.

Si quieres saber más de este componente, te recomendamos la página de Luis Llamas. Si tienes que comprar uno, te recomendamos que no sea superior a 5mW, pues puede dañar permanentemente la retina del ojo [+info]. 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.

Luego vamos a no ponernos nerviosos para desactivar la alarma y mantener la serenidad.

via GIPHY

Solución


Conexiones son sencillas, el laser al D4 por ejemplo y hay que tener maña para que apunte al LDR:

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

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

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

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

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

Y por último la explosión

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

El resultado es

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 !!

Seguro que se te ocurren muchas ideas...

8 Extensiones (avanzado)

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.

Reto

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.

Solución

Conectamos por ejemplo el servo al D4 y el sensor de IR al D7
Con mBlock 3


Con mBlock5 es igual

echidna-servo3.jpg

Lo tienes aquí https://planet.mblock.cc/project/3234387

Otro reto más difícil

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.

8 Extensiones (avanzado)

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.

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.

echidna-semaforo-distancia1.jpg

RETO LEER EL VALOR DEL SENSOR ULTRASONIDOS

Queremos que el objeto panda nos diga la distancia en cm

SOLUCIÓN

Hay un problema

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

Gracias a la contestación de este foro, podemos hacerlo instalando una extensión

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

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

Resultado: El panda nos dice en cm el obstáculo que ponemos delante del sensor US:

echidna-semaforo-distancia5.jpg

El programa lo tienes aquí : https://planet.mblock.cc/project/3233976

RETO RADAR LUMINOSO

Realizar un programa que a medida que se acerque un objeto, se enciendan más luces

Solución

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

El programa lo tienes aquí https://planet.mblock.cc/project/3233931

El resultado es :

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 ?

via GIPHY

RETO HINCAR UNA PELOTA Pon de sprite una pelota y que se hinche a medida que acercas un objeto al ultrasonidos. Solución

RETO PIANO INVISIBLE

Que suene una nota según la distancia del objeto. Solución

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

RETO SENSOR PARKING

Cuanto más cerca está un objeto, más rápido suena un pitido intermitente Solución

8 Extensiones (avanzado)

Bluetooth I Un poco de teoría

ONDAS

Una onda es una señal que se propaga por un medio. Por ejemplo el sonido, que es una onda mecánica que viaja usando el aire o cualquier otro material. Pero en el caso de las señales eléctricas pueden ser enviadas por el cable o a través del vacío (no necesitan un medio para transmitirse).

Dependen de 3 parámetros principalmente:

La relación entre ellas es muy fácil pues las ondas electromagnéticas viajan a la velocidad de la luz c y si velocidad es espacio/tiempo luego c = λ/T luego c= λ*f

Dentro del espectro electromagnético encontramos diferentes tipos de señales dependiendo de las características de su onda.

TRANSMISIÓN INALÁMBRICA: BLUETOOTH.   

¿Sabias que?
Su curioso nombre viene de un antiguo rey Noruego y Danés, y su símbolo, de las antiguas ruinas que representan ese mismo nombre. 

Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por tanto la distancia máxima que podrán alcanzar:

También es muy importante la velocidad a la que pueden enviarse los datos con este protocolo:

Mbps : Mega Bits por segundo.       MBps: Mega Bytes por segundo.
kb = 1.024 b     M = 1.024 k     G = 1.024 M

¿Te atreves a calcularlo …. ?

¿Cuántos ciclos por segundo tendrán las ondas que están en la Banda ISM? ¿Cuál es la longitud de onda?

Solución 
a)  f = 2.4G
b) λ=c/f= 12.5cm o sea, las antenas tendrían que ser de esta longitud. Hay muchos trucos para reducirla, una de ellas es la forma de serpiente que puedes ver en el HC-06
hc-06.png

¿Te atreves a calcularlo...?

¿A qué distancia y cuanto tiempo tardarían en enviarse los siguientes archivos por Bluetooth?

  1. Un vídeo de 7Mb usando versión 2 clase 2
  2. Una imagen de 2.5Mb usando versión 3 clase 1
  3. Un archivo de texto de 240KB usando versión 1.2 clase 1

Solución 
1) 7Mb / 3Mbs = 2.3 seg.
2) 2.5Mb / 24Mbs = 0.1 seg.
3) 240 kB 8b/B = 1.920 kb   1.920 kb  / 1.024 =   1.875 Mb     1.875Mb / 1Mbs  = 1.875 seg. 

¿Bluetooth clásico o Bluetooth Low Energy = BLE?

Es un protocolo similar al clásico Bluetooth pero diseñado a consumir menos potencia manteniendo funcionalidad. Su popularidad ha crecido en multitud de dispositivos  

En robótica, el clásico device que utiliza BLE es la Micro:bit. Aunque la Micro:bit no tiene Wifi integrada, posee una radiofrecuencia que podemos configurar para Bluetooth (hay que elegir, o utilizar sus comandos de Radio o utilizar comandos de Bluetooth)

Por eso a la hora de elegir la APP tienes que tener en cuenta:

Nosotros hemos elegido uno sencillo que cumple las dos condiciones (hay muchas APPs) Serial Bluetooth Terminal

2025-12-05 08_05_39-WhatsApp.png

8 Extensiones (avanzado)

Bluetooth II APP Serial Bluetooth Terminal

DESCARGA LA APP

Esta APP es muy sencilla y la puedes descargar aquí. Tiene las siguientes ventajas :

2025-11-02 21_50_49-Greenshot.png

EMPAREJAR DISPOSITIVOS

Si no esta emparejado con el móvil NO TE PUEDES CONECTAR, para ello entramos en Devices :

2026-01-19 10_15_17-WhatsApp.png

Aquí puedes ver dos capturas de dispositivos en Bluetooth clásico y Bluetooth BLE

LOS QUE ESTAN EN VERDE SON LOS QUE TIENES EMPAREJADOS Y PUEDES CONECTARTE

unnamed.webp  2026-01-19 10_08_05-WhatsApp.png

¿Y si no aparece o no esta emparejado? Entras en el diálogo de Android de Bluetooth y lo emparejas
2026-01-19 10_12_41-Greenshot image editor.png

CONECTARTE

Una vez seleccionado el dispositivo emparejado ya puedes conectarte :

  1. Menú
  2. Entras en Terminal
  3. Enchufe
  4. Sale conectado, ya estas preparado para enviar y recibir

2026-01-19 10_15_17-WhatsApp.png


8 Extensiones (avanzado)

Bluetooth III El HC06

ADVERTENCIA

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 EL HC06 BLOQUEA LA COMUNICACIÓN POR CABLE

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...

2025-12-05 09_34_26-Microsoft PowerPoint - [Presentación1].png
Fuente de las imágenes: www.echidna.es

COMO SE CONECTA

Echidna tiene un conector preparado para conectar un módulo de Bluetooth

Nosotros utilizaremos un JY-MCU o HC-06 muy común y barato :

Para conectar el HC-06 lo hacemos hacia abajo de modo que coincida los pines:

Pines del HC-06 Pines del Echidna Pines del Arduino
Vcc 5V 5V
GND GND GND
RX TX D1
TX RX D0


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
Imagen www.echidna.es

 

8 Extensiones (avanzado)

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

PASO 1 INSTALAMOS EL DISPOSITIVO ARDUINO IDE

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

PASO 2 INSTALAMOS LA EXTENSIÓN BLUETOOTH SERIAL

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

PASO 3 PROGRAMA

Con la extensión instalada y el dispositivo ya podemos empezar a programar

ENUNCIADO Vamos a realizar un programa que envíe y reciba datos desde la APP del móvil al Echidna

SOLUCIÓN

2025-12-05 10_17_34-mBlock v5.4.3.png
El programa lo puedes descargar aquí https://planet.mblock.cc/project/6844489

  1. 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
  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

CUÁNTO HAY QUE MAPEARLO pues el LDR según 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

VALOR ASCII CARACTER
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9

Resultado

Otras APPs

Hay otras apps como el Arduino Bluetooth Control  que permite poner flechas, control de voz... pero no permite envío de Echidna a APP

Incluso se podría hacer un coche teledirigido, el programa lo tienes en el repositorio: https://github.com/JavierQuintana/Echidna y el vídeo en el muro

9 Programación con código (avanzado)


9 Programación con código (avanzado)

Ojo: Tres cosas

Te cargas el firmware

Si te pasas a la programación por código te cargas el firmware pues grabas tu programar en el Arduino del Echidna.

Ponlo en modo sensor

Nota: Acuérdate de poner la Echidna en modo Sensor, es decir Echidna no trabaja en modo MkyMky

Tienes que saber algo de código

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

9 Programación con código (avanzado)

Entorno de programación de Arduino

Necesitarás el entorno de desarrollo Arduino IDE (IDE, Integrated development environment) (aquí https://www.arduino.cc/en/Main/Software para descargártelo)

OJO, existe la versión online del editor https://create.arduino.cc/editor.
Es una buena solución si trabajas en varios equipos y quieres que tus proyectos estén disponibles en cualquier equipo.
ATENCION para usar la versión online, tienes que instalar en tu ordenador el software AGENT
https://create.arduino.cc/getting-started/plugin/welcome


En Linux puede salir este mensaje "can't open device "/dev/ttyUSB0": Permission denied" donde 0 puede ser otro número, la solución aquí

Está constituido por un editor de texto para escribir el código, un área de mensajes, una barra de herramientas con botones para las funciones comunes, y una serie de menús.

Arduino utiliza para escribir el código fuente o programa de aplicación lo que denomina "sketch" (programa). Estos programas son escritos en el editor de texto. Existe la posibilidad de cortar/pegar y buscar/remplazar texto.

Permite la conexión, por USB, con el hardware de Arduino para cargar los programas y comunicarse con ellos.

Y permite varias placas, tenemos que elegir la nuestra, en el KIT de CATEDU es Arduino UNO pero si tienes otro modelo este curso seguro que puede ser válido:

En el área de mensajes se muestra información mientras se cargan los programas y también muestra errores.

Lo importante es cuando pinchemos en la flecha de subir nuestro programa, no salga ningún error, sino simplemente "Subido".

¿Cómo se programa Arduino?

Las partes principales de un programa hecho en Arduino son: Bloque de inclusión de módulos y declaración de variables, bloque de configuración void setup() donde se indica el modo de funcionamiento de los pines (entrada y salida), comunicación serie, etc... y bloque de ejecución continua void loop(), en este bloque se incluyen las acciones que queremos que realice el programa. Se ejecutará línea a línea de forma secuencial y continua. Cuando llegue a la última instrucción incluída en la función loop() volverá a ejecutar la primera y continuará en un bucle infinito.

¿Arduino tiene que estar continuamente conectada a un ordenador?

Sólo es necesario que esté conectado al ordenador mediante el USB para cargar los programas o para visualizar en tiempo de ejecución datos del programa mediante la consola serie. El ordenador proporciona la energía eléctrica suficiente para que funcionen los programas, pero una vez cargado el programa en la memoria del microcontrolador de Arduino se puede desconectar del USB y alimentar a la tarjeta mediante una fuente externa mediante el jack de alimentación con un margen de (5 a 20 Voltios). El programa cargado en Arduino queda grabado permanentemente aunque cese el suministro eléctrico.

Para una mayor información y manejo de la instalación del entorno de programación, lenguaje de programación y librerías se encuentra en la página web de la comunidad Arduino:

9 Programación con código (avanzado)

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

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.

El programa es sencillo, lo tienes desarrollado aquí

https://app.arduino.cc/sketches/6705568b-32f2-43ca-a7f8-25d0fcd72bf8?view-mode=preview

Y puedes ver que además de encender las luces, por el puerto serie salen los mensajes correspondientes

9 Programación con código (avanzado)

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.

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

Solución aquí https://app.arduino.cc/sketches/8ceb4e52-0447-4968-b2bb-8720de847248?view-mode=preview

¿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)

9 Programación con código (avanzado)

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

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

9 Programación con código (avanzado)

Señales PWM

Arduino, ESP32, Micro:bit, PicoW...  tienen entradas analógicas y digitales. Pero salidas sólo digitales.

Para simular una salida analógica entre 0V y 5V  se utilizan señales digitales PWM. En Arduino sólo tiene 6 salidas pseudo-analógicas. En los pines digitales 3, 5, 6, 8, 10 y 11 son PWM

¿Qué es eso de PWM? La señal PWM (Pulse Width Modulation, Modulación de Ancho de Pulso) es una señal que utiliza el microcontrolador para generar una señal continua sobre el proceso a controlar. Por ejemplo, la variación de la intensidad luminosa de un led, el control de velocidad de un motor de corriente continua,...

Para que un dispositivo digital, microcontrolador de la placa Arduino, genere una señal continua lo que hace es emitir una señal cuadrada con pulsos de frecuencia constante y tensión de 5V. A continuación, variando la duración activa del pulso (ciclo de trabajo) se obtiene a la salida una señal continua variable desde 0V a 5V.

Veamos gráficamente la señal PWM:

Los pines digitales de la placa Arduino que se utilizan como salida de señal PWM generan una señal cuadrada de frecuencia constante (490Hz), sobre esta señal periódica por programación podemos variar la duración del pulso como vemos en estos 3 casos:

Ejemplo en código ArduinoIDE y Arduino
Para ejecutar una señal PWM, es simplemente analogWrite(analogOutPin, outputValor); donde analogOutPin es el número del Pin PWM, acuérdate que sólo puede ser uno de estos 6 : 3, 5, 6, 8, 10 y 11 y outpuValor es el valor de la señal PWM pero ojo desde 0 a 255 es decir si quieres el valor de 0V tienes que poner 0, si quieres el valor de 5V tienes que poner 255 y si quieres poner un valor medio, haz una regla de tres, por ejemplo 2.5V tienes que poner 255/2=127 o 128 da igual
Otro ejemplo en Python con Micro:bit
pin16.write_analog(brillo) donde brillo puede ir de 0 a 255

9 Programación con código (avanzado)

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

Mapear un valor

Como uno lee 0 a 1024 y el otro necesita valores de 0 a 255 necesitamos un traductor o mapeo con la instrucción map(value, fromLow, fromHigh, toLow, toHigh) esta instrucción la colocaremos, como suele estar los intérpretes en medio, o sea, entre la instrucción analogRead y la analogWrite

Solución con map

https://app.arduino.cc/sketches/491021f3-fbd8-498f-99a1-1a5ff02a441d?view-mode=preview

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

¿Se puede hacer sin la instrucción map?

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);
}

9 Programación con código (avanzado)

Intensidad del led verde según la luz en LDR

Ahora para practicar más los conceptos anteriores

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

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

Como puedes ver el brillo de la luz verde va al revés de la luz recibida en el LDR

¿Por qué el LDR va de 250 a 1.024 en vez de 0 a 1.024?

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

2025-01-04 00_34_57-Recursos_electronica_Black_EchidnaBlack_0_ESQ.pdf at master · EchidnaShield_Recu.png

9 Programación con código (avanzado)

Pitido

Vamos a experimentar con el buzzer, con un simple enunciado

Realizar un programa que suene una "alarma" es decir, que haga un pitido intermitente de 1 segundo

La solución la tienes aquí: https://app.arduino.cc/sketches/4c7a18bb-5012-499e-a353-6916182e728d?view-mode=preview

Acuérdate de subir el volumen, en el potenciómetro !!

¿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

9 Programación con código (avanzado)

Servomotores

Una de las aplicaciones más utilizadas de los sistemas de control por ordenador y en la robótica están asociados con los motores, que permiten accionar o mover otros componentes, como puertas, barreras, válvulas, ruedas, etc. Uno de los tipos que vamos a ver en este capítulo son lo servos, hay de dos tipos:

Por defecto cuando se dice servo, es un servomotor o servo convencional

Servos de rotación continua

Para controlar un servo de rotación continua, las instrucciones a realizar son :

Mira el vídeo, esta realizado con otra shield ECHIDNA y con bloques mBlock (curso Echidna  https://libros.catedu.es/books/echidna/ ) fíjate como:

Si quieres saber más sobre servomotores te recomendamos estas paginas del Zaragozano Luis LLamas: Servomotores convencionales y Servomotores de rotación continua

Servomotores o servos convencionales

Los servos son un tipo especial de motor en el que se añade una circuito lógico electrónico que permite un control mucho más preciso que a un motor normal de corriente continua. Esto les permite posicionar el eje en un ángulo determinado. 

El hardware interno se compone de un potenciómetro y un circuito integrado que controlan en todo momento los grados que gira el motor. De este modo, en nuestro caso, desde Arduino, usando las salidas digitales PWM podremos controlar fácilmente un servo. Lo ideal es conectarlo a 6V pero trabajan bien en los 5V del Arduino.

Hay muchos modelos, en robótica educativa cuestan entre 1-5€, el más común es el SG90, muy barato, pero tiene muy poca fuerza, el MG90S tiene algo más, si queremos algo más, ya tiene que ser el  MG996R pero ya este modelo NO se puede conectar directamente al Arduino o Raspberry, el pico de energía que necesita, provoca el reinicio de la placa. Incluso varios pequeños SG90.

Las instrucciones son las mismas que los servos de rotación continua, pero los valores que se proporcionan son los grados que se desean. 

La instrucción myservo.write(angulo) envía por el pin digital declarado en myservo.attach() pulsos cuadrados de 50Hz y de anchura el estado alto proporcional al ángulo que se desea.

Si quieres saber más, te recomendamos https://www.luisllamas.es/controlar-un-servo-con-arduino/

Arduino Servomotor by Marco De Simone on Sketchfab

9 Programación con código (avanzado)

Ángulo del servo según Joystick

Para practicar un poco los servos, vamos a realizar el siguiente enunciado

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

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

Si no tienes servo, puedes simularlo. En la siguiente simulación, puedes mover el potenciómetro y ver el resultado

¿Te atreves...?
A realizar un programa que mueva el servo según la inclinación de la placa

9 Programación con código (avanzado)

¿Y Makey Makey? Estoy harto que me roben las naranjas

¿Podemos hacer proyectos Makey Makey? Por supuesto, pero....

Ponlo en modo Makey Makey

Nota: Acuérdate de poner la Echidna en modo Makey Makey, y luego acuérdate de cambiarlo si vuelves a utilizar los sensores

Estoy harto que me roben las naranjas

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

La solución la tienes aquí : https://app.arduino.cc/sketches/b043d527-bf50-476a-ac61-c537d820f261?view-mode=preview

.

¿Por qué no va 100% bien?

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

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.

¿Te atreverías a hacer un piano con bananas ? https://libros.catedu.es/books/echidna/page/montaje-11-piano

9 Programación con código (avanzado)

Bluetooth I Un poco de teoría

ONDAS

Una onda es una señal que se propaga por un medio. Por ejemplo el sonido, que es una onda mecánica que viaja usando el aire o cualquier otro material. Pero en el caso de las señales eléctricas pueden ser enviadas por el cable o a través del vacío (no necesitan un medio para transmitirse).

Dependen de 3 parámetros principalmente:

La relación entre ellas es muy fácil pues las ondas electromagnéticas viajan a la velocidad de la luz c y si velocidad es espacio/tiempo luego c = λ/T luego c= λ*f

Dentro del espectro electromagnético encontramos diferentes tipos de señales dependiendo de las características de su onda.

TRANSMISIÓN INALÁMBRICA: BLUETOOTH.   

¿Sabias que?
Su curioso nombre viene de un antiguo rey Noruego y Danés, y su símbolo, de las antiguas ruinas que representan ese mismo nombre. 

Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por tanto la distancia máxima que podrán alcanzar:

También es muy importante la velocidad a la que pueden enviarse los datos con este protocolo:

Mbps : Mega Bits por segundo.       MBps: Mega Bytes por segundo.
kb = 1.024 b     M = 1.024 k     G = 1.024 M

¿Te atreves a calcularlo …. ?

¿Cuántos ciclos por segundo tendrán las ondas que están en la Banda ISM? ¿Cuál es la longitud de onda?

Solución 
a)  f = 2.4G
b) λ=c/f= 12.5cm o sea, las antenas tendrían que ser de esta longitud. Hay muchos trucos para reducirla, una de ellas es la forma de serpiente que puedes ver en el HC-06
hc-06.png

¿Te atreves a calcularlo...?

¿A qué distancia y cuanto tiempo tardarían en enviarse los siguientes archivos por Bluetooth?

  1. Un vídeo de 7Mb usando versión 2 clase 2
  2. Una imagen de 2.5Mb usando versión 3 clase 1
  3. Un archivo de texto de 240KB usando versión 1.2 clase 1

Solución 
1) 7Mb / 3Mbs = 2.3 seg.
2) 2.5Mb / 24Mbs = 0.1 seg.
3) 240 kB 8b/B = 1.920 kb   1.920 kb  / 1.024 =   1.875 Mb     1.875Mb / 1Mbs  = 1.875 seg. 

¿Bluetooth clásico o Bluetooth Low Energy = BLE?

Es un protocolo similar al clásico Bluetooth pero diseñado a consumir menos potencia manteniendo funcionalidad. Su popularidad ha crecido en multitud de dispositivos  

En robótica, el clásico device que utiliza BLE es la Micro:bit. Aunque la Micro:bit no tiene Wifi integrada, posee una radiofrecuencia que podemos configurar para Bluetooth (hay que elegir, o utilizar sus comandos de Radio o utilizar comandos de Bluetooth)

Por eso a la hora de elegir la APP tienes que tener en cuenta:

Nosotros hemos elegido uno sencillo que cumple las dos condiciones (hay muchas APPs) Serial Bluetooth Terminal

2025-12-05 08_05_39-WhatsApp.png

9 Programación con código (avanzado)

Bluetooth II APP Serial Bluetooth Terminal

DESCARGA LA APP

Esta APP es muy sencilla y la puedes descargar aquí. Tiene las siguientes ventajas :

2025-11-02 21_50_49-Greenshot.png

EMPAREJAR DISPOSITIVOS

Si no esta emparejado con el móvil NO TE PUEDES CONECTAR, para ello entramos en Devices :

2026-01-19 10_15_17-WhatsApp.png

Aquí puedes ver dos capturas de dispositivos en Bluetooth clásico y Bluetooth BLE

LOS QUE ESTAN EN VERDE SON LOS QUE TIENES EMPAREJADOS Y PUEDES CONECTARTE

unnamed.webp  2026-01-19 10_08_05-WhatsApp.png

¿Y si no aparece o no esta emparejado? Entras en el diálogo de Android de Bluetooth y lo emparejas
2026-01-19 10_12_41-Greenshot image editor.png

CONECTARTE

Una vez seleccionado el dispositivo emparejado ya puedes conectarte :

  1. Menú
  2. Entras en Terminal
  3. Enchufe
  4. Sale conectado, ya estas preparado para enviar y recibir

2026-01-19 10_15_17-WhatsApp.png


9 Programación con código (avanzado)

Bluetooth III El HC06

ADVERTENCIA

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 EL HC06 BLOQUEA LA COMUNICACIÓN POR CABLE

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...

2025-12-05 09_34_26-Microsoft PowerPoint - [Presentación1].png
Fuente de las imágenes: www.echidna.es

COMO SE CONECTA

Echidna tiene un conector preparado para conectar un módulo de Bluetooth

Nosotros utilizaremos un JY-MCU o HC-06 muy común y barato :

Para conectar el HC-06 lo hacemos hacia abajo de modo que coincida los pines:

Pines del HC-06 Pines del Echidna Pines del Arduino
Vcc 5V 5V
GND GND GND
RX TX D1
TX RX D0


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
Imagen www.echidna.es

 

9 Programación con código (avanzado)

Bluetooth IV programa

ENUNCIADO 

Vamos a realizar un programa que envíe y reciba datos desde la APP del móvil al Echidna

SOLUCIÓN
/*
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);
          }

        }
  }

}

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 

CUÁNTO HAY QUE MAPEARLO pues el LDR según 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

VALOR ASCII CARACTER
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
Resultado

PARA SABER MÁS

Muro

Hecho con Padlet

Créditos

Cualquier observación o detección de error en soporte.catedu.es

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

image-1648462299882.png

image-1648462361893.png