树莓派SSD1306屏幕180度旋转

Linux, 折腾 2019/01/03

搞了一块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

原值分别为0xC80xA0

#控制屏幕上下翻转
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)

  • 31 评论于 回复

    您好,我使用树莓派zero修改0x1没有反应

    • Bug侠 评论于 回复

      @31
      抱歉,我已经换成4针I2C接口的屏幕了,这篇文章里记录的方法可能已经失效,没法帮到你 :汗:

    • 袁一百 评论于 回复

      @31
      参考:https://wenku.baidu.com/view/4b33c8df3069a45177232f60ddccda38366be130.html

      通过文档,发现:
      C8,C0是两个状态,,,,A1和A0是两个状态,,,所以博主手误,不是0x1而是0xA1

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)