dcexpert 发表于 2017-4-23 00:38

用官方的SSD1306.py 驱动 OLED

<div class='showpostmsg'>此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处

这几天看了一下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这一段文字,就说明驱动成功了。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()后才能显示出来。

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






</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

ihalin 发表于 2017-4-23 09:36

{:1_103:}

strong161 发表于 2017-4-23 11:51

这是把Micropython玩出朵花来的节奏,来学习下。这个挺好,等有空了,我也要把各种东西都玩玩,全都放得要生霉了都没有空玩!

dcexpert 发表于 2017-4-23 15:23

strong161 发表于 2017-4-23 11:51
这是把Micropython玩出朵花来的节奏,来学习下。这个挺好,等有空了,我也要把各种东西都玩玩,全都放得要 ...

基本功能大家都玩过了,下一步就是要逐步开始做应用了,真正用到产品中去

dcexpert 发表于 2017-4-23 17:25

补充一下图片:




dql2016 发表于 2017-4-23 18:49

{:1_103:}{:1_103:}{:1_103:}{:1_103:}

flyword 发表于 2017-4-24 16:17

学习一下!!

zwei9 发表于 2017-4-24 16:46

:time::time::time:
{:1_103:}

硕果累累 发表于 2017-4-25 14:31

心好累,看个帖子还得回复。

xutong 发表于 2017-4-26 11:04

Micropython好像写起来比较省事啊

czc1987 发表于 2017-4-26 12:58

sms      我看看

dcexpert 发表于 2017-4-26 18:15

xutong 发表于 2017-4-26 11:04
Micropython好像写起来比较省事啊

当然,这就是python语言的优点

machinnneee 发表于 2017-4-27 08:48

:time:

spino 发表于 2017-5-8 21:13

谢谢分享!!!!!!!

心学习 发表于 2017-5-19 15:31

学习一下

繁华一世简 发表于 2017-5-23 19:27

谢谢分享

412027359 发表于 2017-6-2 17:46

赞赞 支持。。

cjkdjr 发表于 2017-6-7 11:30

看看

lhbzx19842017 发表于 2017-6-17 21:50

感谢楼主

a1181104899 发表于 2017-7-20 15:45

正好学习学习
页: [1] 2 3 4
查看完整版本: 用官方的SSD1306.py 驱动 OLED