from machine import Pin
# Entradas del sist. combinatorio
x3=Pin(35,Pin.IN)
x2=Pin(34,Pin.IN)
x1=Pin(39,Pin.IN)
x0=Pin(36,Pin.IN)
# Salidas del sist. combinatorio
a1=Pin(25,Pin.OUT)
b1=Pin(26,Pin.OUT)
c1=Pin(27,Pin.OUT)
d1=Pin(14,Pin.OUT)
e1=Pin(13,Pin.OUT)
f1=Pin(15,Pin.OUT)
g1=Pin(4,Pin.OUT)
a2=Pin(21,Pin.OUT)
b2=Pin(19,Pin.OUT)
c2=Pin(18,Pin.OUT)
d2=Pin(5,Pin.OUT)
e2=Pin(17,Pin.OUT)
f2=Pin(16,Pin.OUT)
g2=Pin(0,Pin.OUT)
# Tabla de verdad del sist. combinatorio
tabla7seg=(
(0,0,0,0,0,0,1),
(1,0,0,1,1,1,1),
(0,0,1,0,0,1,0),
(0,0,0,0,1,1,0),
(1,0,0,1,1,0,0),
(0,1,0,0,1,0,0),
(0,1,0,0,0,0,0),
(0,0,0,1,1,1,1),
(0,0,0,0,0,0,0),
(0,0,0,0,1,0,0),
(0,0,0,1,0,0,0),
(1,1,0,0,0,0,0),
(0,1,1,0,0,0,1),
(1,0,0,0,0,1,0),
(0,1,1,0,0,0,0),
(0,1,1,1,0,0,0),
(0,1,1,0,0,0,0),
(1,1,1,1,1,1,1)
)
# Función para encender display
def display7seg1(digito):
# Indexa tabla de verdad y envia al display
a1.value(tabla7seg[digito][0])
b1.value(tabla7seg[digito][1])
c1.value(tabla7seg[digito][2])
d1.value(tabla7seg[digito][3])
e1.value(tabla7seg[digito][4])
f1.value(tabla7seg[digito][5])
g1.value(tabla7seg[digito][6])
def display7seg2(digito):
a2.value(tabla7seg[digito][0])
b2.value(tabla7seg[digito][1])
c2.value(tabla7seg[digito][2])
d2.value(tabla7seg[digito][3])
e2.value(tabla7seg[digito][4])
f2.value(tabla7seg[digito][5])
g2.value(tabla7seg[digito][6])
# Funcion para crear y sumar la fibonacci
def fibonacci(num):
a, b, c = 0, 1, 0
suma = 0
while c < num:
suma += a
a, b = b, a + b
c=c+1
return(suma)
#Lazo principal
while True:
# Lee entradas
x3_val=x3.value()
x2_val=x2.value()
x1_val=x1.value()
x0_val=x0.value()
ent=8*x3_val+4*x2_val+2*x1_val+x0_val
#Definir Salida Display
if ent>9:
display7seg1(17)
display7seg2(16)
else:
res = fibonacci(ent)
decena = int(res/10)
unidad = res%10
if decena==0:
display7seg1(17)
display7seg2(unidad)
else:
display7seg1(decena)
display7seg2(unidad)