# File: main.py
from machine import Pin, I2C
import time
from lcd_i2c import LCDI2C
# Khởi tạo I2C trên Pico: SDA→GP0, SCL→GP1
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400_000)
# Test scan để kiểm tra address
devices = i2c.scan()
print("I2C devices found:", devices)
if not devices:
raise RuntimeError("No I2C device found. Kiểm tra dây SDA/SCL và nguồn!")
# Chọn address đầu tiên (thường là 0x3f hoặc 0x27)
addr = devices[0]
print(f"Using I2C address: 0x{addr:02X}")
# Khởi tạo LCD với kích thước 16x2
lcd = LCDI2C(i2c, addr=addr, width=16, height=2)
# Demo 1: In lời chào sử dụng hàm message (hỗ trợ xuống dòng tự động với '\n')
print("Displaying welcome message...")
lcd.message("Hello, Pico!\n Toi La Thanh \n ok")
time.sleep(3)
# Xóa màn hình để chuẩn bị cho nội dung mới
lcd.clear()
print("Screen cleared.")
time.sleep(1)
# Demo 2: Cuộn chữ trên dòng đầu tiên
print("Starting scrolling text demo...")
long_text = " CHAO MUNG 50 NAM GIAI PHONG MIEN NAM 30/04/1975 - 30/04/2025!" # Chuỗi cần cuộn
line_to_scroll = 0
scroll_delay = 0.3
display_width = lcd.width
# Thêm khoảng trắng vào cuối chuỗi để nó cuộn hoàn toàn ra khỏi màn hình
padded_text = long_text + " " * display_width
# Vòng lặp để cuộn chữ
# Lặp từ 0 đến độ dài của chuỗi gốc cộng với chiều rộng màn hình để cuộn hết
for i in range(len(long_text) + display_width):
# Xác định phần chuỗi sẽ hiển thị trong khung nhìn hiện tại
# Lấy ra một "cửa sổ" có kích thước bằng chiều rộng màn hình từ padded_text
start_index = i
end_index = i + display_width
text_to_display = padded_text[start_index:end_index]
# In phần chuỗi này lên dòng cần cuộn
lcd.lcd_string(text_to_display, line_to_scroll)
# (Tùy chọn) Giữ một dòng khác cố định trong khi dòng trên cuộn
if lcd.height > 1:
lcd.lcd_string("Scroling Text", 1) # In dòng cố định trên dòng thứ hai (nếu có)
# Chờ một chút trước khi dịch chuyển khung nhìn
time.sleep(scroll_delay)
print("Scrolling text demo finished.")
# Giữ màn hình hiển thị nội dung cuối cùng của quá trình cuộn
time.sleep(3)
lcd.clear() # Xóa màn hình sau khi demo kết thúc
print("Program finished.")