I2C接口的OLED在树莓派3上的应用(已过时)

==本文驱动已过时,最新资讯请参见 http://blog.csdn.net/ki1381/article/details/79291138

参考了
http://shumeipai.nxez.com/2017/09/13/solve-the-raspberry-pi-drive-oled-problem.html#more-3449。向作者表示感谢。(这算不算循环引用 :D)


==以下是过期文章==

试了下在树莓派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()




猜你喜欢

转载自blog.csdn.net/ki1381/article/details/52425565