OLED是很常用的电子元件,它体积小、接口简单、功耗低、显示 效果好,因此在DIY、创客制作、电子竞赛中得到广泛应用。
现在常用的OLED模块有SPI和I2C两种接口,它们的功能相同,只是接口方式有些不一样。SPI有6线和7线两种,而I2C接口只使用了4根线,使用上更加方便。下面以I2C接口的OLED和ZTMS开发板为例进行介绍,SPI接口的使用方法相同,只是在程序中定义接口时改为SPI 方式。
主控板:ZTMR开发板
0.96oled屏幕
使用RTC
from pyb import RTC #定义对象
rtc.datetime([datetimetuple])
'''datetimetuple格式:(year,month,day,weekday,hours,minutes,seconds,subseconds)
weekday:周一至周日7天
subsecond:255~0
'''
示例代码
# main.py -- put your code here!
# 导入相关模块
from pyb import RTC
from machine import Pin, I2C
#ssd1306库需要在下载并和main.py保持相同路径
from ssd1306 import SSD1306_I2C
# 定义星期和时间(时分秒)显示字符列表
week = ['Mon', 'Tues', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
time = ['', '', '']
# 初始化所有相关对象
i2c=I2C(sda=Pin("X2"),scl=Pin("X1"))
oled=SSD1306_I2C(128,64,i2c,addr=0x3c)
rtc = RTC()
rtc = init()
# 默认时间(2020年5月12日周二09:25:00)
if rtc.datetime()[0]!=2020:
rtc.datetime((2020, 05, 12, 2, 9, 25, 0, 0))
while True:
t = rtc.datetime() # 获取当前时间
oled.fill(0) # 清屏显示黑色背景
oled.text('mizhixianyu', 0, 0)
oled.text('RTC shiyan', 0, 12)
# 显示日期,字符串可以直接用“+”来连接
oled.text(str(t[0]) + '-' + str(t[1]) + '-' +
str(t[2]) + ' ' + week[(t[3] - 1)], 0, 40)
# 显示时间需要判断时、分、秒的值否小于 10,如果小于 10,则在显示前面补“0”以 #达
# 到较佳的显示效果
for i in range(4, 7):
if t[i] < 10:
time[i - 4] = "0"
else:
time[i - 4] = ""
# 显示时间
oled.text(time[0] + str(t[4]) + ':' + time[1] +
str(t[5]) + ':' + time[2] + str(t[6]), 0, 55)
oled.show()
pyb.delay(300)