0.96 OLED Display
Roy Lv7

cmd-markdown-logo
之前买过一个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 许可协议。转载请注明出处!