from machine import Pin, I2C
import ssd1306
import framebuf
from time import sleep
# --- 1. ตั้งค่า Hardware ---
i2c = I2C(0, scl=Pin(9), sda=Pin(8))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
btn1 = Pin(17, Pin.IN, Pin.PULL_UP)
# --- 2. Boot Screen 1 ---
buffer_data = bytearray([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x1f, 0x80, 0x0f, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00,
0x00, 0x1f, 0xc0, 0x1f, 0xf1, 0x00, 0x00, 0x18, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc0, 0x3f, 0xe1, 0x80, 0x00, 0x18, 0x00, 0x38, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc0, 0x3f, 0xe1, 0xc0, 0x00, 0x38, 0x00, 0xf9, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc0, 0x7f, 0xc3, 0xc0, 0x00, 0x38, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc0, 0xff, 0x83, 0xe0, 0x00, 0x7c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc0, 0xff, 0x83, 0xe0, 0x00, 0x7c, 0x03, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc1, 0xff, 0x07, 0xe0, 0x00, 0xfe, 0x07, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc3, 0xfe, 0x07, 0xf0, 0x00, 0xfe, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc3, 0xfc, 0x07, 0xf0, 0x01, 0xfe, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc7, 0xfc, 0x07, 0xf8, 0x01, 0xfe, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xcf, 0xf8, 0x0f, 0xf8, 0x01, 0xfe, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xdf, 0xf8, 0x0f, 0xfc, 0x03, 0xff, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xdf, 0xf0, 0x0f, 0xfc, 0x03, 0xff, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xe0, 0x0f, 0xfc, 0x07, 0xff, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xe0, 0x1f, 0xfe, 0x07, 0xff, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xc0, 0x1f, 0xff, 0x0f, 0xff, 0x07, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0x80, 0x1f, 0xff, 0x0f, 0xff, 0x87, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0x00, 0x3f, 0xff, 0x1f, 0xff, 0x87, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0x00, 0x3f, 0xff, 0x9f, 0xff, 0x87, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0x80, 0x3f, 0xff, 0xbf, 0xff, 0x87, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xc0, 0x3f, 0xff, 0xff, 0xff, 0xc7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xc0, 0x7f, 0x9f, 0xff, 0xbf, 0xc7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xff, 0xe0, 0x7f, 0x9f, 0xff, 0x9f, 0xc7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xdf, 0xe0, 0x7f, 0x9f, 0xff, 0x9f, 0xe7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xdf, 0xf0, 0x7f, 0x0f, 0xff, 0x1f, 0xe7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xcf, 0xf8, 0x7f, 0x0f, 0xfe, 0x1f, 0xe7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc7, 0xfc, 0xff, 0x07, 0xfe, 0x1f, 0xe7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc7, 0xfc, 0xff, 0x07, 0xfe, 0x0f, 0xe7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc3, 0xff, 0xfe, 0x03, 0xfc, 0x0f, 0xf7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc1, 0xff, 0xfe, 0x03, 0xfc, 0x07, 0xf7, 0xf8, 0x03, 0xf8, 0x03, 0xfc, 0x00, 0x00,
0x00, 0x1f, 0xc0, 0xff, 0xfe, 0x01, 0xf8, 0x07, 0xf7, 0xf8, 0x03, 0xf8, 0x03, 0xff, 0xff, 0x80,
0x00, 0x1f, 0xc0, 0xff, 0xfe, 0x01, 0xf8, 0x07, 0xf7, 0xf8, 0x03, 0xf8, 0x03, 0xff, 0xff, 0x80,
0x00, 0x1f, 0xc0, 0x7f, 0xfc, 0x01, 0xf0, 0x07, 0xff, 0xf8, 0x03, 0xf8, 0x03, 0xff, 0xff, 0x00,
0x00, 0x1f, 0xc0, 0x7f, 0xfc, 0x00, 0xf0, 0x07, 0xff, 0xf8, 0x03, 0xf8, 0x03, 0xff, 0xff, 0x00,
0x00, 0x1f, 0xc0, 0x3f, 0xfc, 0x00, 0xe0, 0x03, 0xff, 0xf8, 0x03, 0xf8, 0x03, 0xff, 0xfe, 0x00,
0x00, 0x1f, 0xc0, 0x1f, 0xfc, 0x00, 0x60, 0x03, 0xff, 0xf8, 0x03, 0xf8, 0x03, 0xff, 0xfc, 0x00,
0x00, 0x1f, 0xc0, 0x0f, 0xf0, 0x00, 0x40, 0x03, 0xff, 0xf8, 0x03, 0xf8, 0x03, 0xff, 0xfc, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
fb = framebuf.FrameBuffer(buffer_data, 128, 64, framebuf.MONO_HLSB)
oled.fill(0)
oled.blit(fb, 0, 0)
oled.show()
sleep(1)
# --- 3. Boot Screen 2 ---
buffer_data = bytearray([
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xe0, 0x07, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x1f, 0xf8, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf8, 0x7f, 0xfe, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf0, 0xff, 0xff, 0x8f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xf1, 0xf0, 0x07, 0xc7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xc0, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc3, 0x9f, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x87, 0x9f, 0xf9, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x87, 0x9f, 0xff, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x9e, 0x3f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xff, 0xfe, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1f, 0xff, 0x81, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x3f, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0xc0, 0x03, 0xc1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xf0, 0x01, 0xe1, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0xfc, 0xf1, 0xe0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x87, 0xff, 0xf1, 0xe1, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x8f, 0x1f, 0xf1, 0xe1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc7, 0x83, 0xf1, 0xe1, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xc7, 0xc0, 0x03, 0xc3, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe3, 0xf8, 0x0f, 0x83, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0xff, 0x87, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7f, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7c, 0x1f, 0xf8, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xe0, 0x03, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00])
fb = framebuf.FrameBuffer(buffer_data, 128, 64, framebuf.MONO_HLSB)
oled.fill(0)
oled.blit(fb, 0, 0)
oled.show()
sleep(1)
# --- 4. ข้อความที่ต้องการให้วิ่ง ---
msg = "Warit Inseewong | Computer Science, School of Science, King Mongkut's Institute of Technology Ladkrabang"
# คำนวณความยาวข้อความ (Font มาตรฐานกว้างประมาณ 8 pixel ต่อตัวอักษร)
msg_width = len(msg) * 8
# ตัวแปรตำแหน่งอักษรวิ่ง
x_scroll = 128 # เริ่มต้นที่ขอบขวาสุดของจอ
# ตัวแปรปุ่มกด
c = 0
prev_btn_state = 1
def update_display(count, x_pos):
oled.fill(0) # ล้างจอ
# ส่วนที่ 1: แสดงตัวเลข (อยู่กับที่)
oled.text("Count: " + str(count), 0, 0)
oled.hline(0, 10, 128, 1) # ขีดเส้นใต้เท่ๆ
# ส่วนที่ 2: ข้อความวิ่ง (ตำแหน่ง X เปลี่ยนตามตัวแปร x_pos)
oled.text(msg, x_pos, 25)
oled.show()
# --- Main Loop ---
if __name__ == "__main__":
while True:
# --- Logic ปุ่มกด ---
btn_state = btn1.value()
if btn_state == 0 and prev_btn_state == 1:
c += 1
prev_btn_state = btn_state
# --- Logic ข้อความวิ่ง ---
x_scroll -= 2 # ลดค่า X เพื่อให้ขยับไปทางซ้าย (เลขมาก = เร็ว)
# ถ้าข้อความวิ่งทะลุขอบซ้ายไปจนหมดแล้ว (ค่าติดลบมากกว่าความยาวข้อความ)
if x_scroll < -(msg_width):
x_scroll = 128 # รีเซ็ตกลับไปเริ่มที่ขอบขวาใหม่
update_display(c, x_scroll)
# หน่วงเวลาเล็กน้อย (ถ้าไม่หน่วง ข้อความจะวิ่งเร็วจนมองไม่ทัน)
sleep(0.05)Loading
ssd1306
ssd1306