ssd1306 --- Trình điều khiển màn hình OLED

Mô-đun này cung cấp trình điều khiển cho màn hình OLED sử dụng chip SSD1306. Hai giao thức truyền dữ liệu được hỗ trợ: I2C (SSD1306_I2C) và SPI (SSD1306_SPI). Cả hai đều kế thừa API vẽ từ SSD1306, lớp này bọc một framebuf.FrameBuffer1.

Ví dụ:

from machine import I2C
import ssd1306

i2c = I2C(2)
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
oled.fill(0)
oled.text("Hello", 0, 0)
oled.show()

Các lớp

class ssd1306.SSD1306(width: int, height: int, external_vcc: bool)

Lớp cơ sở cho màn hình OLED SSD1306. Các lớp con phải khởi tạo self.framebuf và cung cấp các phương thức write_cmd, write_data, write_framebufpoweron.

Các tham số:

  • width -- Chiều rộng màn hình tính bằng điểm ảnh.

  • height -- Chiều cao màn hình tính bằng điểm ảnh (phải là bội số của 8).

  • external_vcc -- True nếu sử dụng nguồn VCC ngoài, False để bật bơm điện áp nội.

Thuộc tính thực thể:

  • width -- Chiều rộng màn hình tính bằng điểm ảnh.

  • height -- Chiều cao màn hình tính bằng điểm ảnh.

  • external_vcc -- Cờ nguồn VCC ngoài.

  • pages -- Số trang cao 8 điểm ảnh (height // 8).

init_display() None

Gửi chuỗi lệnh khởi tạo đến màn hình, xóa bộ đệm khung hình và làm mới. Được gọi tự động bởi __init__.

poweroff() None

Tắt màn hình (chế độ ngủ).

contrast(contrast: int) None

Đặt độ tương phản màn hình.

  • contrast -- Giá trị độ tương phản trong khoảng 0--255.

invert(invert: int) None

Đảo ngược màu sắc màn hình.

  • invert -- 0 để hiển thị bình thường, 1 để hiển thị đảo ngược. Chỉ bit ít quan trọng nhất được sử dụng.

show() None

Ghi bộ đệm khung hình nội lên màn hình.

fill(col: int) None

Tô toàn bộ bộ đệm khung hình bằng một màu duy nhất.

  • col -- Giá trị màu sắc (0 để tắt, 1 để bật).

pixel(x: int, y: int, col: int) None

Đặt màu sắc cho một điểm ảnh đơn lẻ.

  • x -- Tọa độ cột.

  • y -- Tọa độ hàng.

  • col -- Giá trị màu sắc (0 hoặc 1).

scroll(dx: int, dy: int) None

Dịch chuyển nội dung bộ đệm khung hình theo các giá trị dịch chuyển cho trước. Các điểm ảnh dịch ra ngoài biên sẽ bị mất; các điểm ảnh trống được giữ nguyên.

  • dx -- Dịch chuyển ngang tính bằng điểm ảnh.

  • dy -- Dịch chuyển dọc tính bằng điểm ảnh.

text(string: str, x: int, y: int, col: int = 1) None

Vẽ một chuỗi văn bản sử dụng font 8x8 tích hợp.

  • string -- Văn bản cần vẽ.

  • x -- Tọa độ cột bắt đầu.

  • y -- Tọa độ hàng bắt đầu.

  • col -- Màu sắc nền trước (mặc định 1).

class ssd1306.SSD1306_I2C(width: int, height: int, i2c: machine.I2C, addr: int = 0x3C, external_vcc: bool = False)

Trình điều khiển SSD1306 kết nối qua I2C. Kế thừa từ SSD1306.

Các tham số:

  • width -- Chiều rộng màn hình tính bằng điểm ảnh.

  • height -- Chiều cao màn hình tính bằng điểm ảnh.

  • i2c -- Đối tượng machine.I2C (hoặc tương thích) đã được khởi tạo.

  • addr -- Địa chỉ thiết bị I2C 7-bit (mặc định 0x3C).

  • external_vcc -- True để dùng nguồn VCC ngoài, False để dùng bơm điện áp nội.

write_cmd(cmd: int) None

Gửi một byte lệnh đơn đến màn hình qua I2C.

write_data(buf: bytes) None

Gửi bộ đệm dữ liệu điểm ảnh đến màn hình qua I2C.

class ssd1306.SSD1306_SPI(width: int, height: int, spi: machine.SPI, dc: machine.Pin, res: machine.Pin, cs: machine.Pin, external_vcc: bool = False)

Trình điều khiển SSD1306 kết nối qua SPI. Kế thừa từ SSD1306. Sử dụng tốc độ xung nhịp SPI cố định là 10 MHz.

Các tham số:

  • width -- Chiều rộng màn hình tính bằng điểm ảnh.

  • height -- Chiều cao màn hình tính bằng điểm ảnh.

  • spi -- Đối tượng pyb.SPI (hoặc tương thích).

  • dc -- Chân chọn dữ liệu/lệnh.

  • res -- Chân đặt lại (reset).

  • cs -- Chân chọn chip.

  • external_vcc -- True để dùng nguồn VCC ngoài, False để dùng bơm điện áp nội.

write_cmd(cmd: int) None

Gửi một byte lệnh đơn đến màn hình qua SPI.

write_framebuf() None

Truyền toàn bộ bộ đệm khung hình đến màn hình qua SPI.

poweron() None

Kéo chân reset để bật nguồn màn hình.

Hằng số

ssd1306.SET_CONTRAST: int

Lệnh 0x81 -- đặt độ tương phản màn hình.

ssd1306.SET_ENTIRE_ON: int

Lệnh 0xA4 -- tiếp tục hiển thị từ nội dung RAM.

ssd1306.SET_NORM_INV: int

Lệnh 0xA6 -- chọn chế độ hiển thị bình thường/đảo ngược.

ssd1306.SET_DISP: int

Lệnh 0xAE -- bật/tắt màn hình.

ssd1306.SET_MEM_ADDR: int

Lệnh 0x20 -- chế độ địa chỉ bộ nhớ.

ssd1306.SET_COL_ADDR: int

Lệnh 0x21 -- dải địa chỉ cột.

ssd1306.SET_PAGE_ADDR: int

Lệnh 0x22 -- dải địa chỉ trang.

ssd1306.SET_DISP_START_LINE: int

Lệnh 0x40 -- dòng bắt đầu hiển thị.

ssd1306.SET_SEG_REMAP: int

Lệnh 0xA0 -- ánh xạ lại phân đoạn.

ssd1306.SET_MUX_RATIO: int

Lệnh 0xA8 -- tỷ lệ hợp kênh.

ssd1306.SET_COM_OUT_DIR: int

Lệnh 0xC0 -- hướng quét đầu ra COM.

ssd1306.SET_DISP_OFFSET: int

Lệnh 0xD3 -- độ dịch chuyển hiển thị.

ssd1306.SET_COM_PIN_CFG: int

Lệnh 0xDA -- cấu hình phần cứng chân COM.

ssd1306.SET_DISP_CLK_DIV: int

Lệnh 0xD5 -- tỷ lệ chia xung nhịp hiển thị / tần số dao động.

ssd1306.SET_PRECHARGE: int

Lệnh 0xD9 -- chu kỳ tiền nạp.

ssd1306.SET_VCOM_DESEL: int

Lệnh 0xDB -- mức bỏ chọn VCOMH.

ssd1306.SET_CHARGE_PUMP: int

Lệnh 0x8D -- cấu hình bơm điện áp.