原创 用官方的SSD1306.py 驱动 OLED

2017-4-23 17:30 2832 21 21 分类: MCU/ 嵌入式

这几天看了一下micropython的I2C OLED驱动(SPI的类似),发现有几个版本。一个是官方的版本,还有早期网上流传的版本。


网上的版本使用了pyb.I2C驱动,是将Arduino的OLED驱动移植过来,只能用在STM32上;而官方的驱动使用了machine.I2C,这样有更好的兼容性,适合不同的硬件平台,还可以用软件I2C。


因为没有看到有人介绍官方的SSD1306驱动,所以我就简单的介绍一下I2C接口的OLED使用方法,SPI的也是类似的。下面以比较常见的0.96寸的128x64 I2C OLED为例:



  • 从github下载micropython的源码(或者只下载其中的ssd1306.py文件),然后将ssd1306.py复制到PYB Nano或其它micropython板

  • 连接I2C和电源到I2C的OLED上,如果没有硬件I2C,使用任意GPIO也可以。

  • 在终端里输入下面代码


from machine import I2C
i2c=machine.I2C(-1, sda=machine.Pin("PB9"), scl=machine.Pin("PB8"), freq=400000)

from ssd1306 import SSD1306_I2C
oled = SSD1306_I2C(128, 64, i2c)
oled.text("Hello PYB Nano", 0, 0)
oled.show()

如果可以看到Hello这一段文字,就说明驱动成功了。


pybnano-oled-2


pybnano-oled-1


SSD1306.py中带有的函数不多,主要函数有:



  • text(string, x, y),在(x, y)处显示字符串,注意text()函数内置的字体是8x8的,暂时不能替换

  • poweroff(),关闭OLED显示

  • poweron(),空函数,无任何效果。可以用 write_cmd(0xAF) 代替

  • fill(n),n=0,清空屏幕,n大于0,填充屏幕

  • contrast(),调整亮度。0最暗,255最亮

  • invert(),奇数时反相显示,偶数时正常显示

  • pixel(x, y, c),在(x, y)处画点

  • show(),更新显示内容。前面大部分函数只是写入数据到缓冲区,并不会直接显示到屏幕,需要调用show()后才能显示出来。


另外还有部分功能可以用下面方法实现:



  • framebuf.line(x1,y1,x2,y2,c),画直线

  • framebuf.hline(x,y,w,c),画水平直线

  • framebuf.vline(x,y,w,c),画垂直直线

  • framebuf.fill_rect(x,y,w,h,c),画填充矩形

  • framebuf.rect(x,y,w,h,c),画空心矩形


大家也可以自己封装一下,甚至加入画园、字体选择、显示logo等功能。


文章评论0条评论)

登录后参与讨论
相关推荐阅读
shaoziyang 2017-12-15 11:06
《micropython 入门指南》正式出版了
第一本专门介绍MicroPython的中文图书《MicroPython入门指南》由电子工业出版社正式出版了(各大书店和网络书店都有)。MicroPython是近年开源社区中最热门的项目之一,它功能强大...
shaoziyang 2017-11-01 15:30
《MicoPython入门指南》一书即将发行
《MicoPython入门指南》一书即将发行,这是第一本专业介绍MicroPython的中文书籍,请大家多关注和支持。​​...
shaoziyang 2017-07-13 19:50
micro:bit 专用电池扩展板
最近Microbit这么火,就想着要做点什么,于是就有了这个Microbit的专用电池扩展板。它完美配合原版的microbit,可以为microbit增加电池、蜂鸣器功能,功能上超过 MI:power...
shaoziyang 2017-06-13 09:09
用pyboard的dac播放音乐
官方的PyBoard带有DAC功能,使用DAC,我们可以播放简单的音乐。 先准备好两根铜丝,一个有源音箱,一个音频线。 然后从官方网站下载两个文件: http://micropython.org/...
shaoziyang 2017-06-13 09:03
microbit巡线小车 BoBBoT
BoBBoT 是一个使用 BBC micro:bit 控制的巡线小车套件,它很容易组装。 它特别为儿童设计,让孩子可以通过实践学习计算机科学概念。使用 BoBBoT 可以学习: 算法设计 (流程图和...
shaoziyang 2017-06-12 08:29
micropython升级到了 1.9.1
micropython升级到了 1.9.1,主要改进有: v1.9.1 修复了 stm32 的 USB 存储, lwIP 绑定和 VFS 问题 This release provides an imp...
我要评论
0
21
1
2
3
4
5
6
7
8
9
0
关闭 站长推荐上一条 /4 下一条