之前用的是SPI接口的SSD1306,有7个针脚,前文:树莓派SSD1306屏幕180度旋转
后来被我不小心折了一下屏幕排线,断了……于是就又买了给I2C接口的SSD1306,4针脚
具体怎么玩,教程比较多,有些地方总结一下。
一、安装
sudo apt-get install -y i2c-tools
VCC\GND\SCL\SDA分别对应树莓派GPIO的1\6\5\3接口,raspi-config 里打开I2C开关,执行检测
sudo i2cdetect -y 1
在0x3C处有输出,说明接线OK。
二、驱动
git clone https://github.com/rm-hull/luma.oled.git
cd luma.oled
python setup.py install
三、测试
git clone https://github.com/rm-hull/luma.examples.git
cd luma.examples/examples/
python demo.py
四、上手
在前文 树莓派SSD1306屏幕180度旋转 中,因为我的屏幕要旋转180度,代码大概如下:
from luma.core.interface.serial import i2c
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106
serial = i2c(port=1, address=0x3C)
#rotate参数,整数值,可选0(默认)、1、2、3
#其中0为无旋转,1为顺时针旋转90°,2为180°,3为270°
device = ssd1306(serial, rotate=2)
……
另外其默认调用是,执行完毕后清除当前屏幕内容
如果需要执行完毕代码,并保留内容的话,需要重新定义 cleanup 方法
from luma.core.interface.serial import i2c
from luma.core.render import canvas
from luma.oled.device import ssd1306, ssd1325, ssd1331, sh1106
serial = i2c(port=1, address=0x3C)
device = ssd1306(serial, rotate=2)
#定义cleanup为空,覆盖原方法,可保留内容
device.cleanup = ""