# ex_3_4_01_i2c_scan.py (จำลอง: https://wokwi.com/projects/469817446533481473)
from machine import Pin, I2C
import ssd1306
i2c = I2C(0, sda=Pin(21), scl=Pin(22), freq=100000) # บัสมาตรฐานของเล่ม: SDA=21, SCL=22
oled = ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3c) # จอ 128x64 แอดเดรส 0x3C
devices = i2c.scan() # คืนลิสต์แอดเดรสของอุปกรณ์ที่ตอบรับ
print("พบอุปกรณ์", len(devices), "ตัว")
for addr in devices:
print(" แอดเดรส:", hex(addr))
oled.fill(0) # ล้างจอ (0 = ดับทุกพิกเซล)
oled.text("Smart Farm", 0, 0) # ข้อความที่พิกัด x=0, y=0 (ฟอนต์ 8x8 พิกเซล)
oled.text("System: OK", 0, 16) # บรรทัดถัดไป เว้น y ทีละ 8 หรือ 16 พิกเซล
oled.hline(0, 30, 128, 1) # เส้นนอนตกแต่ง
oled.vline(80, 30, 30, 1) # เส้นนอนตกแต่ง
oled.rect(5, 40, 50, 20, 1) # draw a rectangle outline 10,10 to 117,53, colour=1
oled.show() # สั่งวาดจริงลงจอ (ลืมบรรทัดนี้ = จอไม่ขึ้นอะไร)