from machine import Pin
import time
# ===== Setup 7 Segment =====
# Pastikan urutan pin ini sesuai dengan kabel fisik a,b,c,d,e,f,g di boardmu
seg_pins = [Pin(23, Pin.OUT), Pin(22, Pin.OUT), Pin(21, Pin.OUT),
Pin(19, Pin.OUT), Pin(18, Pin.OUT), Pin(5, Pin.OUT), Pin(17, Pin.OUT)]
# Pola angka 0-9 dan huruf A-F untuk Common Cathode
angka_pattern = [
[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], # A
[0,0,1,1,1,1,1], # B
[1,0,0,1,1,1,0], # C
[0,1,1,1,1,0,1], # D
[1,0,0,1,1,1,1], # E
[1,0,0,0,1,1,1] # F
]
def digit(angka):
# Menggunakan modulo 16 untuk heksadesimal
indeks = angka % 16
for i in range(7):
seg_pins[i].value(angka_pattern[indeks][i])
# ===== Setup Tombol =====
# Ingat: sesuaikan pin dengan koneksi fisik di board (misal GPIO 2)
button = Pin(2, Pin.IN, Pin.PULL_UP)
running = True
last_press = 0
counter = 0
while True:
# 1. Cek tombol
if button.value() == 0:
current = time.ticks_ms()
if time.ticks_diff(current, last_press) > 200:
running = not running
last_press = current
while button.value() == 0: # Debounce: tunggu tombol dilepas
pass
# 2. Logika Counter
if running:
digit(counter)
counter = (counter + 1) % 16 # Hitung sampai 16 (0-F)
time.sleep(0.8)
else:
digit(counter) # Tetap tampilkan angka saat pause