import machine
import utime
#GPIO pins for 7-segment display segments (a-g)
segments = [
machine.Pin(0, machine.Pin.OUT),
machine.Pin(1, machine.Pin.OUT),
machine.Pin(2, machine.Pin.OUT),
machine.Pin(3, machine.Pin.OUT),
machine.Pin(4, machine.Pin.OUT),
machine.Pin(5, machine.Pin.OUT),
machine.Pin(6, machine.Pin.OUT)
]
dips = [21,20,19,18,17]
toggles = []
for itm in dips:
toggles.append(machine.Pin(itm,machine.Pin.IN,machine.Pin.PULL_UP))
# pin states for each digit to display numbers 0-9
number_map = [
[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
[1, 1, 1, 0, 1, 1, 1], #R
[1, 1, 0, 0, 1, 1, 1] #P
]
#function to display a specific number on the 7-segment display
def display_number(number):
segments_values = number_map[number]
for i in range(len(segments)):
segments[i].value(segments_values[i])
while True:
dip_state=[]
dip_string=""
for i in range(5):
dip_state.append(1 - toggles[i].value())
dip_string+=str(1-toggles[i].value())
#print(dip_string)
#if dip_string == "11100":
# display_number(1)
#elif dip_string == "01010":
# display_number(2)
#elif dip_string == "00100":
# display_number(3)
#elif dip_string == "10000":
# display_number(4)
#elif dip_string == "10110":
# display_number(5)
#elif dip_string == "11001":
# display_number(10)
#elif dip_string == "01001":
# display_number(11)
if dip_string == "10000":
display_number(1)
elif dip_string == "01000":
display_number(2)
elif dip_string == "00100":
display_number(3)
elif dip_string == "00010":
display_number(4)
elif dip_string == "00001":
display_number(5)
elif dip_string == "11111":
display_number(10)
elif dip_string == "00000":
display_number(11)
#for number in range(1):
# display_number(number)
# utime.sleep_ms(1000) # Delay between numbers
utime.sleep_ms(500)