之前买过一个0.96英寸的OLED屏幕,一直没有用,最近想着做个小的玩具,比如放在桌面上的小摆件可以提醒生词,提醒todo-list等,或者结合esp8266做成一个情侣见互相留言的小玩具。
##关于OLED
OLED,即有机发光二极管( OrganicLightEmittingDiode)。 OLED 由于同时具备自发光,不需背 光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及 制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。
LCD 都需要背光,而 OLED 不需要,因为它是自发光的。这样同样的显示 OLED 效果要来得好一些。
说说踩过的坑
1.因为使用Micropython,可以参考的资料非常少。
2.这个OLED本身不带字库,除了英文和标准绘图(点、线、形状)之外都需要使用其他方式实现。
3.依赖SSD1306驱动,不能像Arduino的u8g2库一样强大,许多功能需要自己实现。
##中文文字转字模型
所有显示的中文都需要转换成字模,其实在购买屏幕的时候随机送了一个中文取字模的软件。PCtoLCD2002,但是我用的是Mac,总不能为了这个字模装个虚拟机吧,虽然我将另外一台win10开启了远程桌面,但是也不便于形成Demo后别人使用,在有网环境下可以用我写的一个小脚本fontool.可以方便的将想要显示的中文转换为字模。
##图片显示
关于图片的显示,网上有两种方案(基于Arduino)一种是将图片转换为二进制bin文件,另一种和中文差不多,将图片的像素转换为01二进制,0为不现实1为亮。没有现成的库。
###实现图片的显示
以我的头像这个dogydog为例。
这里需要用的的python库
PIL (Pillow)
1.首先将图片处理为灰度模式,然后改变图像的大小,这里有个坑,其实你直接使用PIL的resize就好但是网上的多处例子谈到img = img.resize((w,h),Image.ANTIALIAS)
这个地方的Image.ANTIALIAS
其实是用来处理大型图片缩放时候用到的一个滤镜,对比PS的文件处理速度会快一些而且质量会好一些,在应用与低质量的显示比如这块128 * 64的屏幕上完全用不到精细化处理,而且会适得其反,因为8266的内存有限,使用滤镜生成的bin文件会很大,而且在128*64这样的屏幕上会有毛刺。
对比效果
2.然后逐行的读取每个像素点的数值,生成10矩阵。
代码在这里
显示效果
- 本文标题:0.96 OLED Display
- 本文作者:Roy
- 创建时间:2019-02-26 10:14:59
- 本文链接:https://www.yrzdm.com/2019/02/26/oled-display/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!