import machine
import time
from max7219 import Matrix8x8
# --- Configuration ---
# กำหนดขา SPI สำหรับ ESP32-S3
spi = machine.SPI(1, baudrate=10000000, polarity=1, phase=0, sck=machine.Pin(12), mosi=machine.Pin(11))
cs = machine.Pin(10, machine.Pin.OUT)
# กำหนดขาปุ่มกด (ต่อกับ GPIO 4 และ GND)
button = machine.Pin(4, machine.Pin.IN, machine.Pin.PULL_UP)
# สร้าง Object จอ (4 บล็อกต่อกัน)
display = Matrix8x8(spi, cs, 5)
display.brightness(2) # ปรับความสว่าง (0-15)
# --- Functions ---
def show_text(text):
"""แสดงข้อความแบบนิ่ง (Static)"""
display.fill(0)
# พอจอเรากว้างขึ้น (40px) ถ้าอยากให้ KMITL อยู่ตรงกลางสวยๆ อาจจะต้องขยับ x นิดหน่อย
# แต่ถ้าใส่ x=0 มันจะชิดซ้ายสุด
display.text(text, 0, 0, 1)
display.show()
def blink_screen(times=3, delay=0.2):
"""ฟังก์ชันสั่งให้จอกระพริบ"""
for _ in range(times):
display.fill(1) # เปิดทุกดวง
display.show()
time.sleep(delay)
display.fill(0) # ปิดทุกดวง
display.show()
time.sleep(delay)
def scroll_text(text, speed=0.05):
"""ฟังก์ชันเลื่อนข้อความ (Scroll)"""
length = len(text) * 8 # ความยาวข้อความพิกเซล
# 5 จอ = 40 pixels (8x5)
for i in range(40, -length, -1):
display.fill(0)
display.text(text, i, 0, 1)
display.show()
time.sleep(speed)
# --- Main Loop ---
print("System Started - Waiting for button press...")
while True:
if button.value() == 0: # ตรวจสอบว่าปุ่มถูกกดหรือไม่ (Active Low)
print("Button Pressed!")
# 1. กระพริบ
blink_screen()
# 2. เลื่อนชื่อ
scroll_text("67050514 | Warit Inseewong")
show_text("COM")
time.sleep(1)
show_text("SCI")
time.sleep(1)
show_text("KMITL")
time.sleep(1)
for i in range (1, 32):
show_text(str(i) + "yrs")
time.sleep(0.1)
time.sleep(1)
show_text("FIGHT")
time.sleep(1)
# รอจนกว่าจะปล่อยปุ่ม (กันการกดซ้ำรัวๆ)
while button.value() == 0:
time.sleep(0.1)
else:
# Default Mode: แสดงชื่อ KMITL
show_text("KMITL")
time.sleep(0.1) # Delay เล็กน้อยเพื่อลดภาระ CPU