ESP8266使用Micropython驱动I2C接口OLED屏幕显示
本次使用的oled屏幕为I2C驱动方式,就是屏幕上只有4针接口,最终效果图
提前准备:
1、oled驱动屏幕(3306)
2、esp8266板卡
3、杜邦线母到母需要4条
4、micropython开发环境
一、屏幕介绍
GND 3.3v输入负极
VCC 3.3v输入正极
SCL 时钟
SDA 数据
二、开发板,esp8266
三、杜邦线
四、连线方式
GND 接到开发板的G
VCC 接到开发板的3V
SCL 接到开发板的D5
SDA 接到开发板的D6
由于是测试环境,开发板直接用USB供电,
通过查看文档
通过上面的图可以得出
D5对应的GPIO端口 是14 SDA
D6对应的GPIO端口为12 SCL
首现我们测试下I2C是否正常
>>> import machine
>>> i2c = machine.I2C(scl=machine.Pin(12),sda=machine.Pin(14))
>>> i2c.scan()
如果有返回表示接线正常,可以进行后面的操作
注:如果没有返回,请检测连线是否正确,替换法确认屏幕是否是正常的。
oled屏幕请一定注意正负极不要接反,以及电压3.3V,不然很容易把屏幕烧了。
显示器驱动程序模块,网上已经有人提供,我们直接下载进行使用,地址
https://raw.githubusercontent.com/adafruit/micropython-adafruit-ssd1306/master/ssd1306.py
下载文件直接放到项目的根目录
先简单说下屏幕的分辨率,所谓的分辨率就是像素点。
这次的屏幕是128*64分辨率,就是横向(X轴)有128个像素点,纵向(Y轴)有64个点,一共是128*64=8192个像素点。我们点亮需要的像素点,就能成像出我们需要的
另外一个知识点:以Y轴八个像素点为单位写入,要细研究,就查看芯片手册。
下面编写代码。并刷入到开发板上
from machine import Pin, I2C from ssd1306 import SSD1306_I2C import network import time # 这一段是之前的配置网络 net = network.WLAN(network.STA_IF) if not net.isconnected(): net.active(True) net.connect("Lily", "Meiyoumima") while not net.isconnected(): time.sleep(1) #定义我们屏幕的两个接口 scl = Pin(12, Pin.OUT) sda = Pin(14, Pin.OUT) #初始化一个I2C对象,指定SCL 以及SDA脚 i2c = I2C(scl=scl, sda=sda) #初始化一个SSD1306对象,需要给定屏幕的尺寸,128*64 oled = SSD1306_I2C(128, 64, i2c) #清楚屏幕 oled.fill(0) #第一行显示,x轴从0开始,y轴也是从0开始。上面的知识我们说过了,这段话会占用8行 oled.text("Hello word", 0, 0) #第二行显示,x还是从最左边显示,y轴从16开始,这里为了好看,空一直字符间距, oled.text("this is Alex Labe", 0, 16) #第三行显示IP, oled.text(net.ifconfig()[0], 0, 32) #第四行显示,X轴从64开始,就是从中间开始显示,y轴从50开始,这里可以看出,这里不是8的倍数。 #这样也是没问题的,就是屏幕内部会分两次写入内存而已, oled.text("By Alex", 64, 50) #开始显示屏幕 oled.show()
效果:
下一次屏幕驱动显示中文
- 本文标签: micropython系列
- 本文链接: http://www.iamlk.cn/article/100
- 版权声明: 本文由Leonidax原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权