from machine import Pin
import time
# ===== Setup 7 Segment =====
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)]
angka_pattern = [
[1,1,1,1,1,1,0], [0,1,1,0,0,0,0], [1,1,0,1,1,0,1], [1,1,1,1,0,0,1],
[0,1,1,0,0,1,1], [1,0,1,1,0,1,1], [1,0,1,1,1,1,1], [1,1,1,0,0,0,0],
[1,1,1,1,1,1,1], [1,1,1,1,0,1,1]
]
def digit(angka):
satuan = angka % 10
for i in range(7):
seg_pins[i].value(angka_pattern[satuan][i])
# ===== Setup Tombol (Gunakan PULL_UP agar responsif) =====
button = Pin(2, Pin.IN, Pin.PULL_UP)
running = True
last_press = 0
counter = 0
while True:
# 1. Cek tombol (Debounce yang lebih responsif)
if button.value() == 0:
current = time.ticks_ms()
if time.ticks_diff(current, last_press) > 200: # Jeda 200ms cukup untuk responsif
running = not running
last_press = current
# Tambahan: Tunggu sampai tombol dilepas agar tidak 'tertekan' terus
while button.value() == 0:
pass
# 2. Logika Counter (Kecepatan bisa diubah dengan sleep di bawah)
if running:
digit(counter)
counter = (counter + 1) % 10
time.sleep(0.8) # DITINGKATKAN menjadi 0.8 detik agar lebih pelan
else:
# Jika berhenti, tetap tampilkan angka terakhir
digit(counter)