ESP8266使用Micropython驱动I2C接口OLED屏幕显示

alex micropython系列评论阅读模式

本次使用的oled屏幕为I2C驱动方式,就是屏幕上只有4针接口,最终效果图

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片1
提前准备:

1oled驱动屏幕(3306)

2、esp8266板卡

3、杜邦线母到母需要4

4、micropython开发环境

一、屏幕介绍

GND 3.3v输入负极

VCC 3.3v输入正极

SCL 时钟

SDA 数据

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片2

二、开发板,esp8266

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片3

三、杜邦线

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片4

四、连线方式

GND 接到开发板的G

VCC 接到开发板的3V

SCL 接到开发板的D5

SDA 接到开发板的D6

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片5

由于是测试环境,开发板直接用USB供电,

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片6

通过查看文档

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片7

通过上面的图可以得出

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,不然很容易把屏幕烧了。

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片8

显示器驱动程序模块,网上已经有人提供,我们直接下载进行使用,地址

https://raw.githubusercontent.com/adafruit/micropython-adafruit-ssd1306/master/ssd1306.py

下载文件直接放到项目的根目录

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片9

先简单说下屏幕的分辨率,所谓的分辨率就是像素点。

这次的屏幕是128*64分辨率,就是横向(X)128个像素点,纵向(Y轴)64个点,一共是128*64=8192个像素点。我们点亮需要的像素点,就能成像出我们需要的

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片10

另外一个知识点:以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()

ESP8266使用Micropython驱动I2C接口OLED屏幕显示-图片11

效果:

下一次屏幕驱动显示中文

 

文章末尾固定信息

 
alex
  • 本文由 alex 发表于 2020年10月18日 19:42:40
  • 转载请务必保留本文链接:https://www.qnjslm.com/ITHelp/1136.html
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定