from machine import Pin
import time
time.sleep(1)
pin = Pin(16, Pin.OUT)
rows = [ Pin(i, Pin.OUT) for i in range(0, 4) ]
cols = [ Pin(i, Pin.IN, Pin.PULL_DOWN) for i in range(18, 22) ]
dig_pins = [ Pin(d, Pin.OUT) for d in range(12, 16) ]
seg_pins = [ Pin(s, Pin.OUT) for s in range(4, 11) ]
keys = [
[ 1, 2, 3, 12 ],
[ 4, 5, 6, 13 ],
[ 7, 8, 9, 14 ],
[ 10, 0, 11, 15 ]
]
def get_key():
for row in range(4):
for col in range(4):
rows[row].high()
key = None
if cols[col].value() == 1:
rows[row].low()
time.sleep(0.1)
return keys[row][col]
rows[row].low()
return 10
cifre = [
0b1000000, 0b1111001, 0b0100100, 0b0110000, 0b0011001,
0b0010010, 0b0000010, 0b1111000, 0b0000000, 0b0010000,
0b1111111 # Iskljuciti sve segmente
]
def prikazi_cifru(cifra):
binar = cifre[cifra]
for i in range(7):
seg_pins[i].value(binar & 1)
binar = binar >> 1
def prikazi_brojac(brojac):
if (brojac == 10):
prikazi_cifru(10)
dig_pins[2].value(1)
prikazi_cifru(1)
dig_pins[2].value(0)
prikazi_cifru(10)
dig_pins[3].value(1)
prikazi_cifru(0)
dig_pins[2].value(0)
else:
prikazi_cifru(10)
dig_pins[3].value(1)
prikazi_cifru(brojac)
while True:
time.sleep(0.1)
prikazi_brojac(0)
key = get_key()
while (key != 12):
key = get_key()
time.sleep(0.1)
key = 0
prethodni_key = 0
period = 1
sleep_time = 0.0005
prikazi_brojac(period)
while (key != 12):
key = get_key()
if period == 10:
prikazi_brojac(period)
if key <= 9 and key >= 0:
time.sleep(0.1)
period = (key + 1)
sleep_time = 0.0005 * (key + 1)
prikazi_brojac(period)
elif key == 14 and prethodni_key != 14 and period < 10:
period += 1
sleep_time += 0.0005
prikazi_brojac(period)
elif key == 15 and prethodni_key != 15 and period > 1:
period -= 1
sleep_time -= 0.0005
prikazi_brojac(period)
prethodni_key = key
pin.value(not pin.value())
time.sleep(sleep_time)