Video 9: Pulsadores y entradas - Obijuan/digital-electronics-with-open-FPGAs-tutorial GitHub Wiki
Vídeo
Haz click en la imagen para ver el vídeo en Youtube
Descripción
Los bits se introducen en los circuitos digitales a través de sus entradas. Veremos cómo meter bits mediante los pulsadores internos de la Icezum Alhmabra, y haremos circuitos sencillos con entradas y salidas
Colección
Academia-Jedi-HW-09.zip: Colección para este tutorial. Descargar e instalar
Contenido
- Entradas digitales
- Pulsadores internos en la Icezum Alhambra
- Ejemplo 1: Encendiendo un LED con el pulsador
- Ejemplo 2: apagando un LED con el pulsador
- Ejemplo 3: LEDs alternantes con pulsador
- Ejemplo 4: Superposición de los ejemplos 1 y 2
- ¡No me funcionan los pulsadores!
- Ejercicios propuestos (12 Bitpoints + 2)
- Ejercicios entregados
- Licencia
- Enlaces
- FAQs
Entradas digitales
Los circuitos digitales, que están dentro de los chips, reciben bits por sus entradas, los manipulan, transportan o almacenan, y producen bits de salida
En los ejemplos que hemos visto hasta ahora, sólo se sacaban bits por las Salidas para encender LEDs. Ahora veremos cómo introducir BITs en nuestros circuitos, por sus entradas digitales
El elemento más sencillo para introducir un BIT es el pulsador. Cuando está apretado, su valor es 1, y cuando está liberado, es 0
Al apretar el pulsador se inyecta un Bit 1 en nuestro circuito digital, por la entrada
Al apretar y soltar repetidamente, conseguimos inyectar Bits a 0 y 1
Pulsadores internos en la Icezum Alhambra
La placa Icezum Alhambra incorpora dos pulsadores genéricos, para hacer pruebas. Están situados en la parte superior izquierda de la placa, muy cerca de los LEDs
Estos pulsadores se denotan como SW1 y SW2 en Icestudio.
Si miramos en la documentación también podemos ver que están conectados a los pines físicos 10 y 11 de la FPGA. De esta forma, nos inyectan los bits dentro de la FPGA, que leeremos desde nuestros circuitos hechos con Icestudio. En su estado normal, leeremos 0 por las entradas SW1 y SW2. Al apretarlos, se pondrán a 1
Ejemplo 1: Encendiendo un LED con el pulsador
Haremos un circuito que enciendo el LED 0 cuando se aprieta el pulsador SW1. Abrimos Icestudio y nos vamos al menú Básico/Entrada para colocar un bloque de entrada
Se nos abre una ventana para darle un nombre al bloque. Le ponemos, por ejemplo, Pulsador y le damos al OK
Nos aparece el bloque y lo colocamos. Hacemos click en el botón izquierdo del ratón para ponerlo
Pinchamos en el desplegable del bloque para seleccionar el pin SW1
Ya tenemos listo nuestro bloque de entrada. Por ahí es por donde recibiremos los bits procedentes del pulsador SW1
Ahora colocamos el bloque de salida, como ya sabemos. Le ponemos como nombre LED y lo asociamos al LED 0
y por último tiramos un cable desde la entrada hasta la salida
¡Ya tenemos listo el circuito! Ahora lo cargamos en la placa y lo probamos
El LED0 inicialmente está apagado. Al dejar apretado el pulsador SW1, se enciende. Y al volver a soltarlo se apaga
El circuito que se ha creado se muestra en este dibujo. Físicamente, el pulsador SW1 está unido al pin 10 de la FPGA. Nuestro circuito une internamente este pin de entrada con el de salida, que físiciamente llega hasta este LED0
Y esta es una animación de lo que está pasando internamente :-)
Ejemplo 2: Apagar el LED con el pulsador
Haremos el ejemplo contrario. El LED 7 está encendido hasta que se aprieta el pulsador SW2, que se apaga. Al soltarse se vuelve a encender
En este caso, hay que colocar una puerta NOT. El circuito es:
Lo cargamos en la placa y probamos su funcionamiento
Al cargar el circuito, el LED7 se encenderá. Cuando pulsamos SW2, se apaga. Al liberarlo, se vuelve a encender. Justo el comportamiento contrario que el ejemplo anterior
Esto es lo que ocurre en su interior. Cuando el pulsador no está apretado, entra un 0 por la entrada, que se convierte en un 1 al pasar por la puerta NOT y enciende el LED
El proceso completo se muestra en esta animación
Ejemplo 3: LEDs alternantes con pulsador
Haremos un circuito que haga parpadear los LEDS 7 y 0 alternativamente al apretar el pulsador SW1. Cuando no está apretado, el LED7 está encendido, y el LED 0 apagado. Al apretar el pulsador se apaga el 7 y se enciende el 0
Lo cargamos en la placa para ver su funcionamiento. Se muestra en esta animación:
Este es un ejemplo de un circuito que tiene 1 entrada y 2 salidas
Ejemplo 4: Superposición de los ejemplos 1 y 2
Los ejemplos 1 y 2 son dos circuitos independientes, que tiene cada uno una entrada y una salida. Aplicando el principio de superposición, podemos colocar los dos circuitos en paralelo para que funcionen a la vez, obteniendo un circuito de 2 entradas con 2 salidas
Inicialmente el LED7 está encendido y el resto apagados. Al apretar el puslador SW1, se enciende el LED0. Ambos LEDs, 7 y 0, estarán encendidos. Si apretamos sólo el pulsador SW2, el LED7 se apgarán, por lo que todos los LEDs estarán apagados. Finalmente, si apretados los dos pulsadores a la vez, sólo se encenderá el LED0. El funcionamiento se muestra en esta animación:
En total hay 4 casos: cuando los pulsadores NO están apretados (00), cuando el SW1 está apretado y el SW2 no (10), cuando el SW2 sí pero el SW1 no (01) y cuando ambos están apretados (11). Para cada uno de estos posibles estados hay una salida diferente en los LEDs 7 y 0.
¡No me funcionan los pulsadores!
Si has probado los ejemplos y has detectado que algún pulsador no te funciona bien, puede ser porque se ha quedado un poco de flux en su interior, y no hace buen contacto. Algunos usuarios han reportado este problema, con las Icezum Alhambras de las tiradas 1 y 2. La solución es muy sencilla: usando un cuentagotas o una pajita, echar una gotas de alchol de 96 grados sobre los pulsadores, mientras la placa está encendida (el alcohol no conduce, no hay problema).
Apretar los pulsadores repetidamente hasta que se disuelva el flux y funcionen correctamente. En menos de un minuto ya estarán operativos
Ejercicios propuestos (12 BitPoints + 2)
Ver los detalles de los ejercicios y las entregas en el menú Archivos/Ejemplos/2-Ejercicios de la colección de este tutorial
Resumen:
-
Ejercicio 1 (Total 3 Bitpoints): Hacer un circuito digital que encienda los LEDs 0,1,2 y 3 al apretar el pulsador SW1, y deje apagados el resto. Al soltarlo, se deben encender los LEDS 4,5,6 y 7, y apagar los anteriores
-
Ejercicio 2 (Total 3 Bitpoints): Hacer un circuito digital con dos pulsadores de entrada. Al apretar SW1 se enciende el LED5 y se apaga el LED7, y al soltarlo se enciende LED7 y se apaga el LED5. Al apretar SW2 se enciende LED2 y se apaga LED0, y al soltarlo se enciende LED0 y se apaga LED2
-
Ejercicio 3 (Total 3 Bitpoints): Hacer un circuito digital para que se enciendan los dos ojos de FRANKY al apretar un pulsador, y que se apaguen al soltarlo
-
Ejercicio 4 (3 Bitpoints). Ejercicio Libre. Premiar la creatividad. Entregar por redes sociales o github: Pantallazos, enlaces, vídeos, etc...
Bonus Star Wars Episodio VIII
Para celebrar el estreno del episodio VIII de Star Wars, todas las entregas de los ejercicios del tutorial 9 recibidas hasta el Viernes 22/Dic/2017 (incluido) tendrán 2 Bitpoints Extras
Ejercicios entregados
Carlos Obregón (Carlobre)
Ejercicio 1
Ejercicio 2
Ejercicio 3
Ejercicio 4
JuanDGomezM
Ejercicio 1
Ejercicio 2
Ejercicio 3
Josep Montoliu (Klarojms)
Ejercicio 1
Ejercicio 2
Ejercicio 3
Ejercicio 4
Autor
- Juan González-Gómez (Obijuan)
Licencia
Créditos y agradecimientos
Enlaces
- Repositorio con las colecciones de la Academia Jedi de Hardware
- BricoGeek. Tienda Friki donde comprar componentes electrónicos
- Repositorio de la Icezum Alhambra
- Documentación de la Icezum Alhambra: (PNG)(SVG)(PDF)
- Icestudio
- Monedas Bit imprimibles
FAQs
- He probado los ejemplos, pero los pulsadores no me funcionan
Eso es debido a que se han metido restos de flux y no hacen buen contacto. En el apartado ¡No me funcionan los pulsadores! se indica cómo solucionarlo fácilmente
- ¿Dónde puedo conseguir la placa Icezum Alhambra?
Pueden conseguir una desde Alhambrabits
- ¿Cómo aprendo a manejar github?
Hay mucha información en internet. En su momento hice este Tutorial: Github y FreeCAD para enseñar a manejarlo. Los ejemplos están hechos con ficheros de FreeCAD, sin embargo, lo que se enseña es genérico. También vale para las entregas de los ejercicios del tutorial de Electrónica digital para makers
- ¿Dónde puedo comprar material electrónico?. Hay muchos sitios. Uno muy bueno es Bricogeek