import time
import digitalio
import board
ciclo=True
switch_1= digitalio.DigitalInOut(board.GP16)
switch_1.switch_to_input(pull = digitalio.Pull.DOWN)
switch_2= digitalio.DigitalInOut(board.GP17)
switch_2.switch_to_input(pull = digitalio.Pull.DOWN)
#######################################################################
## Contador 8 bits
#######################################################################
def Contador():
## Se definen los pines de los leds
led_pins=[
board.GP0,board.GP1,board.GP2,board.GP3,board.GP4,
board.GP5,board.GP6,board.GP7
]
## Ajusta los pins como salidas digitales
leds=[digitalio.DigitalInOut(pin) for pin in led_pins]
for led in leds:
led.direction=digitalio.Direction.OUTPUT
## Funcion para actualizar los leds basado en el valor del
## contador binario de 8 bits
def update_leds(counter):
for i in range(8):
leds[i].value=(counter>>i) & 0b01
## Programa principal
counter = 0
for counter in range (0,255):
update_leds(counter)
time.sleep(0.0390625)
print(counter)
counter = 0
update_leds(counter)
#######################################################################
## Display 7 segmentos
#######################################################################
def Display_7():
segments= [board.GP8, board.GP9, board.GP10, board.GP11, board.GP12, board.GP13,board.GP14]
# Define the GPIO pin for the common anode of the 7-segment display
common_catode = board.GP15
# Set up the segments as digital outputs
segment_pins = [digitalio.DigitalInOut(pin) for pin in segments]
for segment_pin in segment_pins:
segment_pin.direction = digitalio.Direction.OUTPUT
# Set up the common catode as a digital output
common_catode_pin = digitalio.DigitalInOut(common_catode)
common_catode_pin.direction = digitalio.Direction.OUTPUT
# Define
digit_patterns =[
[1,1,1,1,1,1,0], #0
[0,1,1,0,0,0,0], #1
[1,1,0,1,1,0,1], #2
[1,1,1,1,0,0,1], #3
[0,1,1,0,0,1,1], #4
[1,0,1,1,0,1,1], #5
[1,0,1,1,1,1,1], #6
[1,1,1,0,0,0,0], #7
[1,1,1,1,1,1,1], #8
[1,1,1,1,0,1,1], #9
]
# Function to display a digit on the 7-segment display
def display_digit(digit):
for i in range(7):
segment_pins[i].value = digit_patterns[digit][i]
common_catode_pin.value = False
time.sleep(0.5)
common_catode_pin.value = True
# Main loop
while True:
for digit in range(10):
display_digit(digit)
break
#######################################################################
## Semaforo doble
#######################################################################
def semaforo_doble():
leds = [board.GP0, board.GP1, board.GP2, board.GP3, board.GP4, board.GP5]
# Set up the leds as digital outputs
led_pins = [digitalio.DigitalInOut(pin) for pin in leds]
for led_pin in led_pins:
led_pin.direction = digitalio.Direction.OUTPUT
#Define the leds patterns for sequences 0 to 9
led_patterns=[
[1,0,0,0,0,1], #0
[0,0,0,0,0,1], #1
[1,0,0,0,0,1], #2
[0,0,0,0,0,1], #3
[0,1,0,0,0,1], #4
[0,0,1,1,0,0], #5
[0,0,1,0,0,0], #6
[0,0,1,1,0,0], #7
[0,0,1,0,0,0], #8
[0,0,1,0,1,0], #9
[0,0,0,0,0,0]
]
# Function to display a pattern on leds
def display_pattern(sequence):
for i in range(6):
led_pins[i].value = led_patterns[sequence][i]
time.sleep(1.5)
# Main loop
while True:
for sequence in range(10):
display_pattern(sequence)
break
while ciclo==True:
if switch_1.value==0 and switch_2.value==1:
Contador()
elif switch_1.value==1 and switch_2.value==0:
Display_7()
elif switch_1.value==1 and switch_2.value==1:
semaforo_doble()
elif switch_1.value==0 and switch_2.value==0:
digit_patterns(11)
ciclo=True