==本文驱动已过时,最新资讯请参见 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()