树莓派SSD1306屏幕180度旋转
搞了一块Adafruit SSD1306 OLED屏幕,贴在显示器下面,可以随时监控树莓派的内存、负载什么的。
注:这篇里用的是SPI接口的SSD1306,也就是7针
I2C接口,4针的看这里:树莓派3B使用I2C接口SSD1306 OLED屏幕
编译安装模块
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_SSD1306
python setup.py install
正确接入后,屏幕显示是正常的,但是因为我是3M双面胶倒着贴的,所以看到的画面反转了180度:如图:
一番百度、谷歌,参照官方的PDF文档,终于找到了解决方法:
修改SSD1306.py
原值分别为0xC8
和0xA0
:
#控制屏幕上下翻转
SSD1306_COMSCANDEC = 0xC8
#控制屏幕旋转
SSD1306_SEGREMAP = 0xA0
注:修改控制数值并保存后,需要重新编译Adafruit_SSD1306模块
python setup.py install
将SSD1306_SEGREMAP
修改为0x1
,屏幕会旋转180度,并左右翻转。效果如图
再将SSD1306_COMSCANDEC
修改为0xC0
,屏幕则会上下翻转,完成!
4 条评论
# 以下是亲测可行代码
disp =Adafruit_SSD1306.SSD1306_128_32(rst=None,i2c_bus=1)
disp.begin()
disp.clear()
disp.display()
disp.command(0xA0)
disp.command(0xC0)
您好,我使用树莓派zero修改0x1没有反应
@31
抱歉,我已经换成4针I2C接口的屏幕了,这篇文章里记录的方法可能已经失效,没法帮到你
@31
参考:https://wenku.baidu.com/view/4b33c8df3069a45177232f60ddccda38366be130.html
通过文档,发现:
C8,C0是两个状态,,,,A1和A0是两个状态,,,所以博主手误,不是0x1而是0xA1