重庆时时彩机人工计划 时时彩计划 时时彩平台计划群 大发时时彩交流群 汪彩时时彩 新疆时时彩走势 重庆时时彩微信群多少 时时彩玩法介绍图 重庆时时彩讨论吧 9时时彩平台怎样 时时彩功夫计划 天津福利彩票时时彩开奖结果 新疆时时彩三星综合走势图 奇特的时时彩跨度算法 买时时彩有什么技巧吗 重庆时时彩前二和值走势图 分分时时彩全天计划 卓越计划时时彩软件 重时时彩三星走势图 重庆时时彩连出大 重庆时时彩人工稳计划 腾龙时时彩缩水工具 时时彩4星稳定条件做号 时时彩后三乘以0.618 时时彩源代码 时时彩稳赚实战大全 时时彩计划软件哪个准 时时彩软件哪个好用 时时彩计划群发软件 天津时时彩app

首页 > 评测 > 评测列表 > 拓展版

PIL与OLED的组合--Adafruit 128x64 OLED for Raspberry上手

PIL   OLED   Adafruit   128x64   OLED   Raspberry   树莓派   
  • 作者:SATURN
  • 来源:21ic
  • [导读]
  • Python Imaging Library (PIL)是python下的图像处理模块,支持多种格式,并提供强大的图形与图像处理功能。OLED显示屏是利用有机电自发光二极管制成的显示屏。由于同时具备自发光有机电激发光二极管,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

Python Imaging Library (PIL)是python下的图像处理模块,支持多种格式,并提供强大的图形与图像处理功能。OLED显示屏是利用有机电自发光二极管制成的显示屏。由于同时具备自发光有机电激发光二极管,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

嵌入式应用中,很多情况下,我们只需要显示一些简单的信息,此时OLED应是比较好的选择。例如在树莓派中,大多数情况下是直接与显示器连接,然后配置键盘、鼠标,这样确实很方便,不过这样太占?#21344;洹?#20381;笔者的经验,在使用树莓派的过程中,大部?#26234;?#20917;下都是使用的HEADLESS模式,即无显示器及键盘、鼠标的工作方式。不过话虽如此,给树莓?#21830;?#21152;一个小小的OLED屏,用来显示一些诸如IP地址,系统负载等信息,一直是笔者的一个强烈愿望!最近,入手一块来自Adafruit的小OLED屏,些屏专为树莓派定制,好好体验了一把HEADLESS的显示输出功能,其中也不乏惊喜!惊喜就是附带还体验了一把PIL的图像处理操作。

先看硬件。

image1.jpg

此模块专为RPI设计,引脚与RPI产品全面兼容,在尺寸上则刚好与RPI ZERO W吻合。模块上OLED显示屏位于中央,两侧还有一些额外的?#21344;洌?#22686;加了一个5向操纵杆和两个按钮,可?#26434;?#20110;实现用户交互,比如设计一个简单的手柄小游戏?

image2_copy.jpg

OLED控制器为SSD1306,通过FPC软排线与RPI的40Pin引脚相连,从背面的引线可以清楚?#21561;?#36830;接情况,这些信号引脚除了SSD1306的I2C接口外,还包括了按钮及五向摇杆的GPIO引脚。

关于硬件信号及连接,请参考下图

image3.png

其中RPI的GPIO4/17/22/23/27分别连接到五向摇杆,GPIO5/6连接到两个按键,SCL及SDA则是SSD1306的I2C接口。简单的设计,带来不一般的体验,?#27604;?#21069;提条件是你得先有一个RPI。段子手网友已开始调侃:很好的设计,就只差一个RPI!

image4.jpg

这是OLED模块与RPI 0 W的连接图,看上去挺和?#22330;?/p>

接下来准备RPI,主要步骤包括启用I2C接口,安装软件及相关的支持库。

树莓派的硬件如I2C/SPI等接口,默认是不开启的,所以先使用raspi-config命令来启用I2C接口,如下

image5.png

启用了I2C接口后,可以使用i2cdetect命令来检测I2C设备,该命令执行结果如下

image6.png

很好,我们已检测到了0x3c地址处的设备,接下开?#21450;?#35013;软件库及官方提供的DEMO。

官方的DEMO使用了RPi.GPIO库,所以先要安装该库

sudo apt-get update

sudo apt-get install build-essential python-dev python-pip

sudo pip install RPi.GPIO

DEMO使用了Python Imaging Library来进行绘图,另外还使用了smbus来进行通信,所以接下来安装这两个库

sudo apt-get install python-imaging python-smbus

这些库?#21450;?#35013;完成之后,接下来将官方DEMO从GIT上拖下来

sudo apt-get install git

git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git

cd Adafruit_Python_SSD1306

sudo python setup.py install

先不管代码,运行个DEMO来看效果,然后再来研究?#38468;凇?/p>

打开examples目录,?#19994;絙uttons.py程序,运行,?#21561;?a href="#" class="popmenulink">OLED屏上的内容如下

image7_copy.jpg

buttons.py程序绘制一个五向摇杆图案及两个按钮图案,当用户按下按钮时,会在OLED上绘制出用户的控制效果,图中显示的是按下五向摇杆的向上按钮的显示效果。

image8_copy.jpg

除了可以绘制简单的?#36127;?#22270;形,?#37096;?#20197;绘制图片内容,图中显示的是绘制一头小猫的效果。不过?#19978;?#30340;是,该OLED不支持彩色及灰度显示,所以显示的只是图片二值化后的结果,稍?#28304;?#31961;!

看了效果,咱们一起来研究下程序,下面以一个汉字显示操为例,顺便研究下强大的PIL库。

程序代码如下

from PIL import Image, ImageDraw, ImageFont

import Adafruit_SSD1306

RST = None

DISP_ADDR = 0x3c

disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

disp.begin()

disp.clear()

disp.display()

size = disp.width, disp.height

font = ImageFont.truetype('msyh.ttc', 12)

image = Image.new('1', size)

draw = ImageDraw.Draw(image)

draw.text((0, 0), '古诗一首', font=font, fill=255)

draw.text((0, 20), '白日依山尽, 黄河入海流', font=font, fill=255)

draw.text((0, 38), '欲穷千里目, 更上一层楼', font=font, fill=255)

disp.image(image)

  • 本文系21ic原创,未经许可禁止转载!

网友评论

时时彩保本1124打法
火热KTV电子游戏 qq飞车下载不了咋回事 尼克斯vs篮网 网络陕西麻将游戏 跳跳乐2018第十七套教学版 尤文图斯赛程万博 昂热校长有多强 马德里竞技和西班牙人 万圣节试玩 巴塞罗那阿拉维斯 斯特拉斯堡VS尼斯 富勒姆主场在哪个城市