I2C接口的OLED在树莓派3上的应用

来源:互联网 发布:精准扶贫数据平台登录 编辑:程序博客网 时间:2024/05/16 11:33

试了下在树莓派3b上使用I2C接口的128x64 OLED小显示屏,成功了。这个模块可以用3.3V供电。

接线很简单,有母对母杜邦线的话甚至可以不用面包板。

从https://github.com/rm-hull/ssd1306 下载了ssd1306-master.zip,解压,

cd ssd1306-master
sudo setup.py install

进入examples目录,几个DEMO都很有意思。尤其是显示logo的那个pi_logo.py,非常简洁,而且不用取字模,只要提供张png即可。但是我还没研究这个png有什么条件,反正随便做了一张png图片没能被成功显示,报错了。回头再研究吧。

-- 更新:--

好像Photoshop里另存为PNG的时候,选项选“交错”即可。

以下代码脱胎于DEMO中的sys_info.py。自己建了一个目录/etc/ttf,把字体文件复制到了它下面,加了权限,代码里把路径改为绝对路径了,DEMO中是相对路径。其实Raspbian自带的ttf字体很多也是可以用的,在/usr/share/fonts/truetype下面。

#!/usr/bin/env python


from datetime import datetime
from oled.device import ssd1306, sh1106
from oled.render import canvas
from PIL import ImageDraw, ImageFont

import socket
import fcntl
import struct
import commands

def getIP(ifname):
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    return socket.inet_ntoa(fcntl.ioctl(
        s.fileno(),
        0x8915,  # SIOCGIFADDR
        struct.pack('256s', ifname[:15])
    )[20:24])

def stats(oled):
    font = ImageFont.load_default()
    font2 = ImageFont.truetype('/etc/ttf/C&C Red Alert [INET].ttf', 18)
    with canvas(oled) as draw:
        draw.text((2, 5), "IP: " + getIP("wlan0"), font=font2, fill=255)


def main():
    oled = ssd1306(port=1, address=0x3C)
    stats(oled)

if __name__ == "__main__":
    main()



0 0