# *************************************************************************************
# * PRAC_ Display de 7 segmentos Anodo comun E05
# * Muestra un efecto con 8 LEDs con asigacion binaria
# * PECA
# * 04 de Octubre de 2023
# * profesor:Hernandez Angeles Emilio
#****************************************************************************************
# Configuracion**************************************************************************
from machine import Pin #llamada a la libreria y a las clase Pin
from rp2 import PIO, StateMachine, asm_pio #llamada a lidreria y a la clases
import time
@asm_pio(out_init=(rp2.PIO.OUT_HIGH,)*16, out_shiftdir=PIO.SHIFT_RIGHT, autopull = True, pull_thresh=16)
def paral_prog(): #Funcion para poder manejar 8 bits
pull() #Funcion para cargar la salida de los 8 bits
out(pins,16) #16 pines de salida
paral_sm = StateMachine(0,paral_prog,freq=10000000,out_base=Pin(0)) #configura la maquina de estados
paral_sm.active(1) #Activa el puerto
# Declaciones de objetos*****************************************************************
Boton_arranque = Pin(22,Pin.IN,Pin.PULL_DOWN) #Se crea objeto siendo el pin 22 como entrada
# Declacion de contantes y variables globales********************************************
Tiempo = 400 # controla el tiempo de encendido y apagado de cada LED
# Declacion de funciones***************************************************************
#Progrma principal*********************************************************************
while Boton_arranque.value() == 0: #Mientras el boton de arranque no se oprima...
paral_sm.put(0xC0FF) #Manda un estado alto al pin 0 y estado bajo alos demas
while True: #Comienza ciclo infinito
paral_sm.put(0xC000) #Manda un estado alto al pin 0 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0xF900) #Manda un estado alto al pin 1 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0xA400) #Manda un estado alto al pin 2 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0xB000) #Manda un estado alto al pin 3 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0x9900) #Manda un estado alto al pin 4 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0x9200) #Manda un estado alto al pin 5 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0x8300) #Manda un estado alto al pin 6 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0xF800) #Manda un estado alto al pin 7 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0x8000) #Manda un estado alto al pin 7 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms
paral_sm.put(0x9800) #Manda un estado alto al pin 7 y estado bajo a los demas
time.sleep_ms(Tiempo) #Pausa en ms