使用esp32整点嗡鸣器响,下面是代码
import network
import machine
from machine import Pin
from machine import RTC
import urequests
import utime
import ujson
from ssd1306 import SSD1306_I2C
#从JSON字符串中提取时间戳
#注意由于计算精度问题时间戳最后3位不要
def getInfoFromJSONStr(jsonStr):
jo=ujson.loads(jsonStr)
timeStamp=jo["data"]
return int(timeStamp["t"][:-3])
#收数字转为字符串
#若数字不足两位补前导0
def fromNumToStr(n):
result=str(n)
if len(result)<2:
result="0"+result
return result
#将元组转换为时间字符串
#注意年份和时区自定义调整
def fromTurpleToTimeStr(tup):
return (str(tup[0]-30)+"-"+fromNumToStr(tup[1])+"-"+fromNumToStr(tup[2]+1),
fromNumToStr(tup[4]+8)+":"+fromNumToStr(tup[5])+":"+fromNumToStr(tup[6]))
#将utime时间元组转换为RTC时间元组
def convertTurple(tup):
return (tup[0],tup[1],tup[2],tup[6],tup[3],tup[4],tup[5],0)
#0.96 " I2C OLED屏
sda=Pin(13)
scl=Pin(14)
i2c=machine.I2C(sda=Pin(13),scl=Pin(14),freq=400000)
oled=SSD1306_I2C(128,64,i2c)
#调整亮度。0最暗,255最亮
oled.contrast(125)
#连接网络
station = network.WLAN(network.STA_IF)
while(not station.isconnected()):
station.active(True)
try:
station.connect("噔噔 6331", "00000001") # wifi网络信息
utime.sleep(5.0)
except OSError:
print("OSError")
utime.sleep(2.0)
#获取时间戳JSON
#苏宁API:
# 不能调用这个,json暂不匹配
# 淘宝API:
' target='_blank'>
[/reply]
response = urequests.get("
' target='_blank'>
[/reply]")
#将从JSON中提取的时间戳解析为日期时间信息元组
timeTup=utime.localtime(getInfoFromJSONStr(response.text))
#创建RTC对象
rtc=RTC()
#设置RTC时间
rtc.datetime(convertTurple(timeTup))
#不断循环显示实时时间
while True:
#基于日期时间信息元组生成显示所需的日期、时间字符串元组
timeNr=fromTurpleToTimeStr(rtc.datetime())
#清空屏幕
oled.fill(0)
#显示日期
oled.text(timeNr[0],26,20,1)
#显示时间
oled.text(timeNr[1],34,36,1)
#执行显示
oled.show()
#休眠
utime.sleep(0.3)
举报 0