from machine import Pin, I2C
import ssd1306
# 初始化 I2C 和 OLED
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
oled.fill(0) # 清除畫面
# 更新的字形資料
name_data1 = [ #姓
0x10, 0x20, 0x10, 0x20, 0x11, 0x20, 0x11, 0x24,
0xFD, 0xFE, 0x25, 0x20, 0x26, 0x20, 0x24, 0x20,
0x24, 0x20, 0x45, 0xFC, 0x28, 0x20, 0x10, 0x20,
0x28, 0x20, 0x44, 0x24, 0x87, 0xFE, 0x00, 0x00
]
name_data2 = [ #名
0x02, 0x00, 0x02, 0x10, 0x07, 0xF8, 0x04, 0x10,
0x0C, 0x20, 0x12, 0x40, 0x01, 0x80, 0x06, 0x00,
0x18, 0x00, 0xE0, 0x08, 0x0F, 0xFC, 0x08, 0x08,
0x08, 0x08, 0x08, 0x08, 0x0F, 0xF8, 0x08, 0x08
]
department_data1 = [ #系
0x00, 0x38, 0x7F, 0xC0, 0x02, 0x00, 0x04, 0x20,
0x08, 0x40, 0x3F, 0x80, 0x01, 0x00, 0x06, 0x20,
0x18, 0x10, 0x3F, 0xF8, 0x11, 0x08, 0x01, 0x00,
0x11, 0x10, 0x21, 0x08, 0x45, 0x08, 0x02, 0x00
]
department_data2 = [ #級
0x10, 0x08, 0x13, 0xFC, 0x20, 0x88, 0x20, 0x88,
0x44, 0x90, 0xF8, 0x90, 0x10, 0xBC, 0x21, 0x04,
0x49, 0x88, 0xFD, 0x48, 0x09, 0x50, 0xAA, 0x20,
0xAA, 0x50, 0xA4, 0x88, 0x89, 0x0E, 0x02, 0x04
]
student_id_data1 = [ #學
0x3A, 0xB8, 0x21, 0x08, 0x3A, 0xB8, 0x21, 0x08,
0x3A, 0xB8, 0x20, 0x08, 0x7F, 0xFE, 0x40, 0x02,
0x9F, 0xE4, 0x00, 0x40, 0x01, 0x80, 0xFF, 0xFE,
0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00
]
student_id_data2 = [ #號
0x00, 0x20, 0x00, 0x3C, 0x7C, 0x20, 0x45, 0xFE,
0x45, 0x22, 0x7D, 0x38, 0x01, 0xE4, 0xFD, 0x3C,
0x21, 0x00, 0x21, 0x78, 0x39, 0x48, 0x0A, 0x48,
0x0A, 0x4A, 0x0A, 0x4A, 0x54, 0x8E, 0x29, 0x00
]
name_character_data1 = [ #林
0x08, 0x20, 0x08, 0x20, 0x08, 0x20, 0x08, 0x24,
0xFE, 0xFE, 0x08, 0x20, 0x18, 0x70, 0x1C, 0x70,
0x2A, 0xA8, 0x2A, 0xA8, 0x49, 0x24, 0x8A, 0x26,
0x08, 0x20, 0x08, 0x20, 0x08, 0x20, 0x08, 0x20
]
name_character_data2 = [ #鈺
0x10, 0x04, 0x11, 0xFE, 0x18, 0x20, 0x24, 0x20,
0x22, 0x20, 0x7C, 0x20, 0x90, 0x20, 0x11, 0xFC,
0xFE, 0x20, 0x10, 0x30, 0x92, 0x28, 0x54, 0x28,
0x1E, 0x20, 0xF0, 0x20, 0x43, 0xFE, 0x00, 0x00
]
name_character_data3 = [ #儒
0x10, 0x08, 0x13, 0xFC, 0x10, 0x40, 0x27, 0xFE,
0x25, 0x52, 0x68, 0xE4, 0xA1, 0x50, 0x20, 0x40,
0x2F, 0xFE, 0x20, 0x80, 0x27, 0xFC, 0x24, 0xA4,
0x24, 0xA4, 0x24, 0xA4, 0x24, 0xA4, 0x24, 0x0C
]
department_character_data1 = [ #社
0x20, 0x40, 0x10, 0x40, 0x10, 0x40, 0x00, 0x40,
0xFC, 0x48, 0x0B, 0xFC, 0x10, 0x40, 0x38, 0x40,
0x54, 0x40, 0x94, 0x40, 0x10, 0x40, 0x10, 0x40,
0x10, 0x44, 0x17, 0xFE, 0x10, 0x00, 0x10, 0x00
]
department_character_data2 = [ #會
0x01, 0x00, 0x02, 0x80, 0x0C, 0x60, 0x37, 0xD8,
0xC0, 0x06, 0x3F, 0xF8, 0x29, 0x28, 0x25, 0x48,
0x3F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x10, 0x10,
0x1F, 0xF0, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10
]
department_character_data3 = [ #大
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00,
0x01, 0x04, 0xFF, 0xFE, 0x01, 0x00, 0x02, 0x80,
0x02, 0x80, 0x02, 0x40, 0x04, 0x40, 0x04, 0x20,
0x08, 0x10, 0x10, 0x0E, 0x60, 0x04, 0x00, 0x00
]
department_character_data4 = [ #一
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0xFF, 0xFE,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
]
# 繪製點陣字形函數
def draw_chinese_character(x, y, data):
for row in range(16):
byte = data[row * 2: row * 2 + 2]
for col in range(16):
if (byte[col // 8] >> (7 - (col % 8))) & 0x01:
oled.pixel(x + col, y + row, 1)
# 繪製姓名、系級和學號
draw_chinese_character(0, 0, name_data1)
draw_chinese_character(17, 0, name_data2)
draw_chinese_character(0, 16, department_data1)
draw_chinese_character(17, 16, department_data2)
draw_chinese_character(0, 32, student_id_data1)
draw_chinese_character(17, 32, student_id_data2)
draw_chinese_character(36, 0, name_character_data1)
draw_chinese_character(53, 0, name_character_data2)
draw_chinese_character(70, 0, name_character_data3)
draw_chinese_character(36, 16, department_character_data1)
draw_chinese_character(53, 16, department_character_data2)
draw_chinese_character(70, 16, department_data1)
draw_chinese_character(87, 16, department_character_data3)
draw_chinese_character(104, 16, department_character_data4)
oled.text('41134B015', 35, 40)
# 更新 OLED 顯示
oled.show()