Skip to content

Video 9: Pulsadores y entradas

Aitor Alejandro Herrera edited this page Dec 16, 2020 · 94 revisions

Vídeo

Click to see the youtube video

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

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

Licencia

Créditos y agradecimientos

Enlaces

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
Clone this wiki locally