Proyecto en Tinkercad: «Contador de 0 a 9 con una Micro:bit y display de 7 segmentos»

Proyecto en Tinkercad: «Contador de 0 a 9 con una Micro:bit y display de 7 segmentos»

El objetivo de este desafío es crear un contador de 0 a 9 usando un display de 7 segmentos conectados a una micro:bit. Este proyecto lo realizaremos en Tinkercad, una aplicación que nos permite emular varios tipos de circuitos electronicos simples y también circuitos conectados a placas programables como la microBit o la Arduino UNO.

Normalmente, las pantallas de 7 segmentos constan de siete LED de colores individuales (llamados segmentos). Cada segmento se puede activar o desactivar para crear un patrón/combinación únicos. Cada segmento se identifica mediante una letra entre la A y la G de la siguiente manera:

7 segmentos

La siguiente tabla de verdad muestra qué segmentos deben estar activados para mostrar los dígitos del 0 al 9:

Dígito A B C D E F G
tmp-0 1 1 1 1 1 1 0
temporal-1 0 1 1 0 0 0 0
tmp-2 1 1 0 1 1 0 1
tmp-3 1 1 1 1 0 0 1
tmp-4 0 1 1 0 0 1 1
tmp-5 1 0 1 1 0 1 1
tmp-6 1 0 1 1 1 1 1
tmp-7 1 1 1 0 0 0 0
tmp-8 1 1 1 1 1 1 1
tmp-9 1 1 1 1 0 1 1

Paso 1: El circuito electrónico:

Aquí tienes el circuito en Tinkercad con el podrás probar toda esta práctica:

Conexiones de pantalla de 7 segmentos

La conexión del display es bastante sencilla, todos los display se caracterizan por tener una conexión común (marcada como 5V) que puede ser positiva (anodo comun) o negativa (catodo comun). En caso que se negativa las conexiones indicadas por las letras desde la A..G, serán positivas, por lo que la microbit deberá inducirle un pulso HIGH o «1» para poder activar el Led correspondiente.

Otro factor importante es que el display consiste de LEDs de 1,8v y la microbit entrega 3v, por lo que deberemos poner una resistencia de unos 220 ohms conectada al catodo comun.

Paso 2: Código Python

Tinkercad tiene un serio problema. La programación en bloques como se hace en MakeCode, tiene enormes limitaciones. Hay decenas de cosas que NO se pueden hacer, por lo que para hacer ciruictos mas complejos es necesario usar Python. Pero lo mas grave es que si empiezas usando Python y luego cambias para ver el codigo en Bloques … «Pierdes todo el codigo que habias escrito», por lo que NUNCA cambies a Bloques si escribes algo avanzado en texto Python.
He aqui el codigo compactado que he escrito para esta práctica. En la lista digitos, hemos puesto los 10 numeros y cada numero es una secuencia binaria de los estados de los leds (desde la A a la G). El For lee esta secuencia y luego los escribimos en los pines que tenemos conectados a la microBit.

# *******************************************************
# Python code
# by Gustavo Dutour

digitos = ["11111100","01100000","11011010","11110010","01100110","10110110","10111110","11100000","11111110","11110110"]

def on_forever():
  for i in range(0,len(digitos)):
    bits=digitos[i]
    pins.digital_write_pin(DigitalPin.P0, int(bits[0]))
    pins.digital_write_pin(DigitalPin.P1, int(bits[1]))
    pins.digital_write_pin(DigitalPin.P2, int(bits[2]))
    pins.digital_write_pin(DigitalPin.P5, int(bits[3]))
    pins.digital_write_pin(DigitalPin.P8, int(bits[4]))
    pins.digital_write_pin(DigitalPin.P11, int(bits[5]))
    pins.digital_write_pin(DigitalPin.P13, int(bits[6]))
    basic.pause(1000)
  
basic.forever(on_forever)
# *********************************************************

Su pantalla de 7 segmentos debería mostrar todos los dígitos, contando del 0 al 9.

Desafío:

cuenta regresiva_animada

Actualice el código a:

  • Crea un temporizador de cuenta regresiva, que vaya del 9 al 0.
  • Permita al usuario pausar y reiniciar el temporizador de cuenta regresiva usando los botones A y B del micro:bit.