from machine import Pin, SoftI2C
import ssd1306
import time
import random # Dùng để tạo số liệu ảo mô phỏng AHT20
# Cấu hình I2C cho màn hình OLED
i2c = SoftI2C(scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# Khởi tạo Nút nhấn
button = Pin(23, Pin.IN, Pin.PULL_UP)
# Biến lưu trạng thái: 0 -> Nhiệt độ, 1 -> Độ ẩm
display_mode = 0
while True:
# --- XỬ LÝ NÚT NHẤN (CHỐNG DỘI PHÍM) ---
if button.value() == 0:
time.sleep(0.05)
if button.value() == 0:
display_mode = (display_mode + 1) % 2 # Đảo trạng thái
while button.value() == 0:
pass # Chờ nhả nút
# --- GIẢ LẬP DỮ LIỆU TỪ AHT20 ---
# Trong thực tế, bạn sẽ dùng lệnh: temp = aht20.temperature
mock_temp = 25.0 + random.uniform(-1.0, 1.0)
mock_humid = 60.0 + random.uniform(-2.0, 2.0)
# --- HIỂN THỊ LÊN MÀN HÌNH OLED ---
oled.fill(0)
oled.text("--- SENSOR AHT20 ---", 0, 0)
if display_mode == 0:
oled.text("> Mode: NHIET DO", 0, 25)
oled.text("Temp: {:.1f} C".format(mock_temp), 0, 45)
else:
oled.text("> Mode: DO AM", 0, 25)
oled.text("Humid: {:.1f} %".format(mock_humid), 0, 45)
oled.show()
time.sleep(0.1)