"""Control de display de 7 segmentos"""
from machine import Pin
import utime
def show(digito, display):
  """
        Muestra el digito en el display 7 segmentos
        
        llamado de la función:
        show(digito, display)
        
        Parametros de entrada:
        digito -> Digito a mostrar
        display -> Lista con los pines del display (Pin.OUT)
        
        by: Sergio Andres Castaño Giraldo
        controlautomaticoeducacion.com/
  """
  #Tupla con los números de un display 7 segmentos catodo común y anodo común...segun necesidad
  #catodo = (int('3f',16),int('06',16),int('5b',16),int('4f',16),int('66',16),int('6d',16),int('7d',16),int('07',16),int('7f',16),int('67',16))
  anodo = (int('40',16),int('79',16),int('24',16),int('30',16),int('19',16),int('12',16),int('02',16),int('78',16),int('00',16),int('18',16))  
  bit = 1;    
  for i in range(7):
    if (anodo[digito]  & bit) == 0:
      display[i].off()
    else:
      display[i].on()
    bit = bit << 1
    
#def main():
    
  #Configura los pines del display 7 segmentos
display_pins = (19, 18, 13, 15, 14, 16, 17) #Raspberry Pi Pico
display = list() #se crea una lista vacia que se va llamar display
for i in range(7):
  display.append( Pin( display_pins[i], Pin.OUT ) ) #hace el ciclo for y va asiganando cada terminal como salida
    
  #Inicia las variables
contador = 0
sentido = True
    
    
while True:
    #Muestra el valor del contador en el display
    #primero se va a la funcion llamada show
  show(contador, display) #mostrar en el display el numero de la variable contador
        
    #Verifica si incrementa o decrementa el contador
  if sentido:
    contador += 1
  else:
    contador -= 1
        
    #Si contador es nueve coloque el sentido del contador a decrementar
  if contador == 9:
    sentido = False
        
    #Si contador es cero coloque el sentido del contador a incrementar
  if contador == 0:
    sentido = True
        
    #Esperar por 1 segundo
  utime.sleep(1)
    
#Entry Point
#if __name__ == '__main__':
 # main()