from machine import Pin
import time
# --- ส่วนตั้งค่า Hardware (Configuration) ---
# กำหนดขา GPIO ที่ใช้เชื่อมต่อกับ 7-Segment (เรียง A, B, C, D, E, F, G, DP)
# ใช้ขา GPIO 4-18 เพื่อหลีกเลี่ยงขาที่เชื่อมต่อกับหน่วยความจำ (PSRAM) ของบอร์ดรุ่น N16R8
pins_config = [4, 5, 6, 7, 15, 16, 17, 18]
# สร้าง List เก็บ Object ของ Pin
segments = []
for pin_num in pins_config:
segments.append(Pin(pin_num, Pin.OUT))
# --- ตารางรูปแบบตัวเลข (Look-up Table) ---
# ระบบ Common Anode: 0 = ไฟติด (On), 1 = ไฟดับ (Off)
# รูปแบบเรียงตามลำดับ [A, B, C, D, E, F, G, DP]
digits_pattern = [
[0, 0, 0, 0, 0, 0, 1, 1], # เลข 0
[1, 0, 0, 1, 1, 1, 1, 1], # เลข 1
[0, 0, 1, 0, 0, 1, 0, 1], # เลข 2
[0, 0, 0, 0, 1, 1, 0, 1], # เลข 3
[1, 0, 0, 1, 1, 0, 0, 1], # เลข 4
[0, 1, 0, 0, 1, 0, 0, 1], # เลข 5
[0, 1, 0, 0, 0, 0, 0, 1], # เลข 6
[0, 0, 0, 1, 1, 1, 1, 1], # เลข 7
[0, 0, 0, 0, 0, 0, 0, 1], # เลข 8
[0, 0, 0, 0, 1, 0, 0, 1] # เลข 9
]
# --- ฟังก์ชันแสดงผลตัวเลข (Function) ---
def display_digit(number):
"""ฟังก์ชันสำหรับรับค่าตัวเลขและสั่งให้ LED ติดตามรูปแบบ"""
if 0 <= number < len(digits_pattern):
pattern = digits_pattern[number]
# วนลูปสั่งงานทีละขา (Segment)
for i in range(8):
segments[i].value(pattern[i])
# --- โปรแกรมหลัก (Main Program) ---
print("System Started: Displaying 0-9")
try:
while True:
# วนลูปนับเลข 0 ถึง 9
for i in range(10):
display_digit(i) # แสดงผลเลข i
print(f"Number: {i}")
time.sleep(1) # รอ 1 วินาที
except KeyboardInterrupt:
# กรณีหยุดโปรแกรม ให้ปิดไฟทุกดวง
for seg in segments:
seg.value(1)
print("Program Stopped")Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1