3. Entradas de Echidna
- Otra vez acuérdate
- MONTAJE 4 ENCENDIDOAPAGADO
- MONTAJE 4-ENCENDIDOAPAGADO-AVANZADO
- MONTAJE 5 LDR
- MONTAJE 5 SEMAFORO SONIDO
- MONTAJE 6 Piano luminoso
- MONTAJE 7 Telesketch
- MONTAJE 7 BIS MATA ALIENS con JOYSTICK
- MONTAJE 7 BIS MATA-ALIENS con acelerómetro
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
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
El código :
El fichero lo tienes en el Github : https://github.com/JavierQuintana/Echidna
Solución con mBlock
Elegimos un objeto que cambie el disfraz, y le ponemos el código

El programa lo tienes aquí https://planet.mblock.cc/project/3228733
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
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:
Manual EchidnaBlack2 y EchidnaML www.echidna.es CC-BY-SA
El programa lo tienes en : https://github.com/JavierQuintana/Echidna
Solución con mBlock
El objeto que cambia el disfraz es igual que en RETO1
El programa lo tienes aquí https://planet.mblock.cc/project/3228741
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.
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
¿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
- Oscuridad menor 200
- Poca luz entre 200 y 500
- Media luz entre 500 y 800
- Mucha luz mayor 800
Con estos valores vamos a realizar un programa que
- Oscuridad: Ningún led encendido
- Poca luz Luz roja
- Media luz Luz naranja
- Mucha luz Luz verde
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
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
El resultado lo puedes ver en este vídeo:
Solución con mBlock
Con mBlock al no tener instrucciones específicas para Echidna, para leer en directo los valores del LDR, hay que utilizar nuestro mBlock y que nuestro simpático oso panda nos diga esos valores, con este sencillo programa en el decice dispositivo Arduino:
DONDE LUZ ES UNA VARIABLE GLOBAL QUE LO LEEN TODOS LOS OBJETOS luego ahora el panda con este programa puede decirnos cuánta luz hay
El valor que leemos con máxima luz (utilizando una linterna) y el valor de máxima oscuridad (a tapar con el dedo, no te compliques) no llegan a los límites que se marcan oficiales en Echidna EN TU CASO PUEDEN SER OTROS !! pero parecidos.
El programa lo tienes aquí https://planet.mblock.cc/project/3228782
Programa mBlock
El programa lo tienes aquí https://planet.mblock.cc/project/3228793
MONTAJE 5 SEMAFORO SONIDO
No vamos a dejar sin poder experimentar este sensor que mide la intensidad del sonido y como está conectado a la salida analógica A7 sus valores van desde el 0 al 1024
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 :
Hemos simulado el sonido soplando en el micro :
¿Te gustaría este semáforo pero que se ejecute de manera independiente (sin necesidad de ordenador), para usarlo en el aula, comedor...? Pues claro, cargando el programa, pero no con Echidna Scratch sino con código, ver en el punto 8 semaforo sonido
¿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)
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
Todos los programas de este curso se encuentran en este repositorio: https://github.com/JavierQuintana/Echidna
Solución con mBlock5
En el Arduino el programa es
En el objeto, el panda es
Nota: se ha incorporado una música con un tono, el C Elec Piano
El programa lo tienes aquí
https://planet.mblock.cc/project/projectshare/3228812
Con mBlock versión 3 ATENCIÓN ESTA VERSIÓN ES OBSOLETA NO RECOMENDADO sólo para PCs muy viejos
En esta versión no es tan sencillo ¿por qué? Porque hay cambios de escala: el LDR nuestro trabaja con valores distintos al de las notas, por lo tanto hay que hacer UN CAMBIO DE ESCALA, y esto necesita un apartado diferente, te recomendamos ver 3.2.3.1 Cambios de escala
Solución
El programa es pues el siguiente
¿por qué lo hacemos con la opción de subir a Arduino? Porque la simulación va lenta (se oye tut-tut-tut) si lo subes al Arduino reproduce el tono correctamente. VER COMO SUBIR AL ARDUINO.
El resultado lo puedes ver en este vídeo:
3.2.3.1 Cambios de escala
Nos encontramos que:
- Los valores de entrada, es decir, el LDR trabaja con unos límites, que según hemos visto en el apartado comprobar los límites, el nuestro va de 108 a 982, llamaremos a esta variable de entrada X
- Los valores de salida son los tonos,que mBlock trabaja con la norma americana (la europea es el típico Do-Re-Mi-Fa-Sol) y los americanos, son valores numéricos que van desde 48 hasta 72 (lo puedes comprobar con la instrucción “tocar nota” que está en Programas-Sonido). Llamaremos a la variable salida de notas Y:

Problema: ¿cómo convertimos X en Y?
Matemáticamente es una recta con una pendiente m y una ordenada n :
Y = m*X + n
Para calcular m y n tenemos que utilizar un sistema de ecuaciones dadas las condiciones límites de X e Y:
- Cuando X = 108 quiero que Y valga 48: 48=m*108 + n
- Cuando X = 982 quiero que Y valga 72: 72=m*982 + n
Ala! dos ecuaciones y dos incógnitas: calcula m y n

Buen ejercicio para los alumnos para que vean matemáticas aplicadas
No obstante, como esto lo repetiremos muchas veces los cambios de escala, hemos confeccionado ESTA HOJA DE CÁLCULO que te lo puedes descargar y facilita las cosas: Ponemos en las celdas amarillas los valores límites :
- X1= 108 X2=982
- Y1=48 Y2=72
Y nos da los valores m y n automáticamente:

Luego la fórmula para el cálculo de la Y (las notas) en función de la luminosidad X es:
Y = 0.027 * X + 45
MONTAJE 7 Telesketch
¿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
QUE ESTA: ( poniendo A0) 
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 😊😁
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:
-
Si el joystick en el eje X es menor que 300 es que estás inclinando el Joystick hacia la izquierda, luego el Sprite tiene que modificar su variable decrementando su valor, un valor fijo que lo definiremos como PASO
-
Si el joystick en el eje X es mayor que 700 es seguro que estás inclinando el Joystick hacia la derecha luego hay que incrementar el valor de la ordenada X el valor predefinido PASO
-
Idem para el eje Y
-
PASO es una variable que de momento lo vamos a poner como 3, si es menor, va más preciso pero más lento, si es mayor es más rápido pero el dibujo es menos preciso.
-
Los botones SR y SL nos servirán para subir y bajar el lápiz y borrar
¿Lápiz ? ¿Qué lápiz?
Lápiz es una extensión para poder dibujar. Para instalar una extensión pulsa aquí
E instalamos esta extensión
Y se instalan nuevas instrucciones para dibujar
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
El programa :
- Inicia las variables que hemos explicado
- En el bucle, las condicionales hacen que se incremente o decremente las variables X e Y la cantidad definida PASO
- El botón SR
- si se pulsa, pinta
- si se suelta no pinta
- El botón SL borra todo
- Mover el sprite según las coordenadas X e Y
Todos los programas de este curso se encuentran en este repositorio: https://github.com/JavierQuintana/Echidna
Solución con mBlock
En mBlock no hay instrucciones especiales para Echidna, hay que hablar pues de A0 para el eje X y A1 para el eje Y por lo tanto las nuevas condiciones son:
Si A0 es menor que 300 es que estás inclinando el Joystick hacia la izquierda, luego el Sprite tiene que modificar su variable x hacia la derecha, es decir decrementando su valor

Si A0 es mayor que 700 es seguro que estás inclinando el Joystick hacia la derecha luego hay que incrementar el valor de la ordenada X
Para los valores del eje Y es igual, cambiando A0 por A1
Programa en mBlock
Primero pondremo un objeto lápiz y añadiremos la extensión LAPIZ esto se entiende mejor con un vídeo
Pero no hagas la programación de hacer el cuadrado. Sino este
Donde BAJAR, SUBIR Y BORRAR SON MENSAJES y X e Y son variables globales a todos los objetos. En el arduino el programa será
El programa te lo puedes descargar aqui https://planet.mblock.cc/project/3228849
VA MUY LENTO El resultado lo puedes ver en este vídeo:
Por curiosidad puedes ver el mismo programa en Snap4Arduino en este vídeo:
Puedes ver que es mucho más rápido que mBlock.
MONTAJE 7 BIS MATA ALIENS con JOYSTICK
Esta vez no vamos a ser originales, vamos a ser un poco vagos y nos vamos a copiar el programa de otra persona. La web de Scratch 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/
Entramos en SEE INSIDE
Lo grabamos en nuestro ordenador
Nos vamos al programa ECHIDNA ML y cargamos el programa descargado
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
Creamos dos variables :
- Una que se llame X que tendrá la posición X de la nave, la inicializamos a 0 al principio y así se coloca la nave enmedio al empezar la partida
- Otra que se llame PASO que fija el paso o incremento cuando se mueva, cuanto más alto, más rápido se mueve, pero menos preciso, a golpes, cuanto más bajo, más lento pero más preciso, lo pondremos a 2
Y cambiamos el código de mover la nave :
- Si el joystick en el sentido X baja de 200 (puede ser un número entre 0-512 pues 512 en teoría es enmedio) pues que X se decremente un PASO
- Si el joystick en el sentido X sube de 600 (puede ser un número entre 512-1021 pues 1024 es el máximo) pues que X se incremente un PASO
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
Queda pues
El resultado
Todos los programas de este curso se encuentran en este repositorio: https://github.com/JavierQuintana/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
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 :



































