ssd1306 --- ไดรเวอร์ OLED

โมดูลนี้ให้ไดรเวอร์สำหรับจอแสดงผล OLED ที่ใช้ SSD1306 รองรับการเชื่อมต่อสองแบบ: I2C (SSD1306_I2C) และ SPI (SSD1306_SPI) ทั้งสองสืบทอด API การวาดจาก SSD1306 ซึ่งห่อหุ้ม framebuf.FrameBuffer1

ตัวอย่าง:

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()

คลาส

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

คลาสพื้นฐานสำหรับจอแสดงผล OLED รุ่น SSD1306 คลาสย่อยต้องกำหนดค่า self.framebuf และจัดเตรียมเมธอด write_cmd, write_data, write_framebuf และ poweron

อาร์กิวเมนต์:

  • width -- ความกว้างของจอแสดงผลเป็นพิกเซล

  • height -- ความสูงของจอแสดงผลเป็นพิกเซล (ต้องเป็นผลคูณของ 8)

  • external_vcc -- True หากใช้แหล่งจ่าย VCC ภายนอก False เพื่อเปิดใช้งานปั๊มชาร์จภายใน

แอตทริบิวต์อินสแตนซ์:

  • width -- ความกว้างของจอแสดงผลเป็นพิกเซล

  • height -- ความสูงของจอแสดงผลเป็นพิกเซล

  • external_vcc -- แฟล็ก VCC ภายนอก

  • pages -- จำนวนเพจที่มีความสูง 8 พิกเซล (height // 8)

init_display() None

ส่งลำดับคำสั่งเริ่มต้นไปยังจอแสดงผล ล้างบัฟเฟอร์เฟรม และรีเฟรช เรียกโดยอัตโนมัติโดย __init__

poweroff() None

ปิดจอแสดงผล (โหมดสลีป)

contrast(contrast: int) None

ตั้งค่าความคมชัดของจอแสดงผล

  • contrast -- ค่าความคมชัดในช่วง 0--255

invert(invert: int) None

สลับสีของจอแสดงผล

  • invert -- 0 สำหรับเอาต์พุตปกติ 1 สำหรับเอาต์พุตที่กลับสี ใช้เฉพาะบิตที่มีนัยสำคัญน้อยที่สุด

show() None

ฟลัชบัฟเฟอร์เฟรมภายในไปยังจอแสดงผล

fill(col: int) None

เติมบัฟเฟอร์เฟรมทั้งหมดด้วยสีเดียว

  • col -- ค่าสี (0 สำหรับปิด 1 สำหรับเปิด)

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

ตั้งค่าสีของพิกเซลเดี่ยว

  • x -- พิกัดคอลัมน์

  • y -- พิกัดแถว

  • col -- ค่าสี (0 หรือ 1)

scroll(dx: int, dy: int) None

เลื่อนเนื้อหาบัฟเฟอร์เฟรมตามออฟเซตที่กำหนด พิกเซลที่เลื่อนออกนอกขอบเขตจะสูญหาย พิกเซลที่ว่างเปล่าจะไม่ถูกแก้ไข

  • dx -- การเลื่อนแนวนอนเป็นพิกเซล

  • dy -- การเลื่อนแนวตั้งเป็นพิกเซล

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

วาดสตริงโดยใช้ฟอนต์ 8x8 ในตัว

  • string -- ข้อความที่จะวาด

  • x -- พิกัดคอลัมน์เริ่มต้น

  • y -- พิกัดแถวเริ่มต้น

  • col -- สีพื้นหน้า (ค่าเริ่มต้น 1)

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

ไดรเวอร์ SSD1306 แบบ I2C สืบทอดจาก SSD1306

อาร์กิวเมนต์:

  • width -- ความกว้างของจอแสดงผลเป็นพิกเซล

  • height -- ความสูงของจอแสดงผลเป็นพิกเซล

  • i2c -- ออบเจ็กต์ machine.I2C (หรือที่เข้ากันได้) ที่ถูกกำหนดค่าแล้ว

  • addr -- ที่อยู่อุปกรณ์ I2C แบบ 7 บิต (ค่าเริ่มต้น 0x3C)

  • external_vcc -- True สำหรับ VCC ภายนอก False เพื่อใช้ปั๊มชาร์จภายใน

write_cmd(cmd: int) None

ส่งไบต์คำสั่งเดี่ยวไปยังจอแสดงผลผ่าน I2C

write_data(buf: bytes) None

ส่งบัฟเฟอร์ข้อมูลพิกเซลไปยังจอแสดงผลผ่าน 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)

ไดรเวอร์ SSD1306 แบบ SPI สืบทอดจาก SSD1306 ใช้อัตราสัญญาณนาฬิกา SPI คงที่ที่ 10 MHz

อาร์กิวเมนต์:

  • width -- ความกว้างของจอแสดงผลเป็นพิกเซล

  • height -- ความสูงของจอแสดงผลเป็นพิกเซล

  • spi -- ออบเจ็กต์ pyb.SPI (หรือที่เข้ากันได้)

  • dc -- พินเลือกข้อมูล/คำสั่ง

  • res -- พินรีเซ็ต

  • cs -- พิน Chip-select

  • external_vcc -- True สำหรับ VCC ภายนอก False เพื่อใช้ปั๊มชาร์จภายใน

write_cmd(cmd: int) None

ส่งไบต์คำสั่งเดี่ยวไปยังจอแสดงผลผ่าน SPI

write_framebuf() None

ส่งบัฟเฟอร์เฟรมทั้งหมดไปยังจอแสดงผลผ่าน SPI

poweron() None

สลับสายรีเซ็ตเพื่อเปิดใช้งานจอแสดงผล

ค่าคงที่

ssd1306.SET_CONTRAST: int

คำสั่ง 0x81 -- ตั้งค่าความคมชัดของจอแสดงผล

ssd1306.SET_ENTIRE_ON: int

คำสั่ง 0xA4 -- กลับมาแสดงผลจากเนื้อหา RAM

ssd1306.SET_NORM_INV: int

คำสั่ง 0xA6 -- เลือกการแสดงผลปกติ/กลับสี

ssd1306.SET_DISP: int

คำสั่ง 0xAE -- เปิด/ปิดจอแสดงผล

ssd1306.SET_MEM_ADDR: int

คำสั่ง 0x20 -- โหมดการกำหนดแอดเดรสหน่วยความจำ

ssd1306.SET_COL_ADDR: int

คำสั่ง 0x21 -- ช่วงที่อยู่คอลัมน์

ssd1306.SET_PAGE_ADDR: int

คำสั่ง 0x22 -- ช่วงที่อยู่เพจ

ssd1306.SET_DISP_START_LINE: int

คำสั่ง 0x40 -- บรรทัดเริ่มต้นของจอแสดงผล

ssd1306.SET_SEG_REMAP: int

คำสั่ง 0xA0 -- การแมปเซกเมนต์ใหม่

ssd1306.SET_MUX_RATIO: int

คำสั่ง 0xA8 -- อัตราส่วน multiplexing

ssd1306.SET_COM_OUT_DIR: int

คำสั่ง 0xC0 -- ทิศทางการสแกนเอาต์พุต COM

ssd1306.SET_DISP_OFFSET: int

คำสั่ง 0xD3 -- ออฟเซ็ตของจอแสดงผล

ssd1306.SET_COM_PIN_CFG: int

คำสั่ง 0xDA -- การกำหนดค่าฮาร์ดแวร์พิน COM

ssd1306.SET_DISP_CLK_DIV: int

คำสั่ง 0xD5 -- อัตราส่วนการหารสัญญาณนาฬิกาของจอแสดงผล / ความถี่ออสซิลเลเตอร์

ssd1306.SET_PRECHARGE: int

คำสั่ง 0xD9 -- ช่วงเวลาก่อนชาร์จ

ssd1306.SET_VCOM_DESEL: int

คำสั่ง 0xDB -- ระดับ VCOMH deselect

ssd1306.SET_CHARGE_PUMP: int

คำสั่ง 0x8D -- การกำหนดค่าปั๊มชาร์จ