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()



  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ki1381

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值