用esp32山寨一个网络时钟
今天用esp32山寨一个网络时钟成功!用的是thoon4.17.1版本。
安装网上一高手的固件和sy7735库,
运行正常。
main.py如下:
#正常运行
import machine
from machine import Pin, I2C, RTC,Timer,SPI
from st7735 import ST7735
import ntptime
import network
def connect():
wifi = network.WLAN(network.STA_IF)
if not wifi.isconnected():
wifi.active(True)
wifi.connect('网络名称', '密码')
while not wifi.isconnected():
pass
print('network config:',wifi.ifconfig())
week = ['一', 'Tuesday', 'Wednesay', 'Thursday', 'Friday', 'Saturday', '日']
time_list = ['', '', '']
#i2c = machine.SoftI2C(sda=Pin(13), scl=Pin(14))
# 初始化SPI
spi=SPI(2, baudrate=20000000, polarity=0, phase=0, sck=Pin(14), mosi=Pin(13))
lcd = ST7735(128, 160, spi,dc=Pin(16),cs=Pin(18),rst=Pin(17),rot=0,bgr=0)
lcd.font_load('./GB2312-24.fon')
rtc = RTC()
if rtc.datetime() != 2025:
rtc.datetime()
def RTC_Run(tim):
datetime = rtc.datetime() # 获取当前时间
#print(datetime)
lcd.fill(0x0000) # 清屏显示黑色背景
lcd.text('lxa0的网络时钟',23,0,0xf7ff)
lcd.text(str(datetime) + '-' + str(datetime) + '-' +
str(datetime) + ' ' + week], 28, 18,0x451)
# 显示时间需要判断时、分、秒的值否小于 10,如果小于 10,则在显示前面补“0”以
# 达到较佳的显示效果
for i in range(4, 7):
if datetime < 10:
time_list = "0"
else:
time_list = ""
# 显示时间
lcd.text(time_list + str(datetime) + ':' + time_list + str(datetime) + ':' + time_list + str(datetime), 40, 35,0xF800)
lcd.show()
connect()
ntptime.NTP_DELTA = 3155644800 #设置北京时间
ntptime.host = 'ntp.aliyun.com' #设置校时服务器
ntptime.settime()
#开启 RTOS 定时器
tim = Timer(-1)
tim.init(period=300, mode=Timer.PERIODIC, callback=RTC_Run) #周期 300ms
建议把代码贴在“代码文字”框内,便于坛友阅读:
#正常运行
import machine
from machine import Pin, I2C, RTC,Timer,SPI
from st7735 import ST7735
import ntptime
import network
def connect():
wifi = network.WLAN(network.STA_IF)
if not wifi.isconnected():
wifi.active(True)
wifi.connect('网络名称', '密码')
while not wifi.isconnected():
pass
print('network config:',wifi.ifconfig())
week = ['一', 'Tuesday', 'Wednesay', 'Thursday', 'Friday', 'Saturday', '日']
time_list = ['', '', '']
#i2c = machine.SoftI2C(sda=Pin(13), scl=Pin(14))
# 初始化SPI
spi=SPI(2, baudrate=20000000, polarity=0, phase=0, sck=Pin(14), mosi=Pin(13))
lcd = ST7735(128, 160, spi,dc=Pin(16),cs=Pin(18),rst=Pin(17),rot=0,bgr=0)
lcd.font_load('./GB2312-24.fon')
rtc = RTC()
if rtc.datetime() != 2025:
rtc.datetime()
def RTC_Run(tim):
datetime = rtc.datetime() # 获取当前时间
#print(datetime)
lcd.fill(0x0000) # 清屏显示黑色背景
lcd.text('lxa0的网络时钟',23,0,0xf7ff)
lcd.text(str(datetime) + '-' + str(datetime) + '-' +
str(datetime) + ' ' + week], 28, 18,0x451)
# 显示时间需要判断时、分、秒的值否小于 10,如果小于 10,则在显示前面补“0”以
# 达到较佳的显示效果
for i in range(4, 7):
if datetime < 10:
time_list = "0"
else:
time_list = ""
# 显示时间
lcd.text(time_list + str(datetime) + ':' + time_list + str(datetime) + ':' + time_list + str(datetime), 40, 35,0xF800)
lcd.show()
connect()
ntptime.NTP_DELTA = 3155644800 #设置北京时间
ntptime.host = 'ntp.aliyun.com' #设置校时服务器
ntptime.settime()
#开启 RTOS 定时器
tim = Timer(-1)
tim.init(period=300, mode=Timer.PERIODIC, callback=RTC_Run) #周期 300ms 本帖最后由 scoopydoo 于 2025-1-26 19:05 编辑
顺便再说一句,你这个代码肯定不是高手写的,就连俺这个 Python 永远的初学者都能看出来这代码不行。
举个栗子,给分和秒前面补零的代码,俺在 Python 中是这样写的:
TIMEZONE = +8# Beijing, China (GMT+8)
now = time.localtime()
hour, min, sec = (now + TIMEZONE) % 24, now, now
print(f"{hour}:{min:02d}:{sec:02d}")
scoopydoo 发表于 2025-1-26 18:27
顺便再说一句,你这个代码肯定不是高手写的,就连俺这个 Python 永远的初学者都能看出来这代码不行。
举 ...
对高手的认定:比我厉害的我就认定他是高手。
你也是我眼里的高手。 lxa000 发表于 2025-1-26 21:31
对高手的认定:比我厉害的我就认定他是高手。
你也是我眼里的高手。
俺是永远的初学者,一边学一边忘,永远都成不了高手! :'( scoopydoo 发表于 2025-1-26 17:55
建议把代码贴在“代码文字”框内,便于坛友阅读:
还没用过代码文字框。
刚才找到了 。
下次就可以用了 。
谢谢 !
页:
[1]