基于esp32 C3的micropython星座风格的桌面时钟制作保姆级教程(6)

前面(1)~(5)节一套连招下来,我们的桌面时钟已经有模有样了,但是看上去总感觉怪怪的。我们把横线和竖线加上,把时间、天气、星座分隔开,把整个屏幕分割成三块,看上去就会舒服很多:

tfttext.hline(0,185,240,st7789py.color565(0,0,255))
tfttext.vline(119,0,185,st7789py.color565(255,0,0))

第一行里面,0代表从第0列开始显示,185表示从第185行开始显示,240代表长度。

第二行里面,119代表从第119列开始显示,0表示从第0行开始显示,185代表高度。

差不多了,这是最终版代码:

from machine import Pin,SPI
import st7789py
import time
import vga2_bold_16x32 as font
import vga2_8x16 as font1
import st7789_itprojects
import time,ntptime,network
import _thread
import urequests,ujson


spi = SPI(1,baudrate = 40_000_000,polarity = 1,sck = Pin(2),mosi = Pin(3),miso = None)
# 此处reset对应屏幕RES所接的开发板的GPIO10脚,dc对应屏幕DC所接的开发板的GPIO6脚
tfttext = st7789py.ST7789(spi,320,240,reset = Pin(10,Pin.OUT),dc = Pin(6,Pin.OUT),cs = None,backlight = None,rotation = 0) #rotation 方向0-3方位
tfttext.fill(st7789py.color565(0,0,0))

tft = st7789_itprojects.ST7889_Image(spi, dc=Pin(6), cs=None, rst=Pin(10))
tft.fill(st7789_itprojects.color565(0,0, 0))  # 背景设置为黑色


def wifi_main():
    global inif
    wifi=network.WLAN(network.STA_IF)        #WIFI模式
    if not wifi.isconnected():
        print('wifi  ing......')
        wifi.active(True)
        wifi.connect('laboratory','m17826804692n')  #连接WIFI
        while not wifi.isconnected():
            tfttext.text(font1,'wifi failed',50,204,st7789py.color565(255,0,0),st7789py.color565(0,0,0))
            pass
    print('Wifi connection succeeded')
    print('network config:', wifi.ifconfig())


def timeconfirm():
    xingqi=['Today is Monday','Today is Tuesday','Today is Wednesday','Today is Thursday','Today is Friday','Today is Saturday','Today is Sunday']
    while True:   #时间校准
        try:
            print('time ing')
            ntptime.settime()
            print('time ok')
            break;
        except:
            print('time no')
            time.sleep(1)
    mytime=time.localtime()
    myhour='%d:%d'%(mytime[3]+8,mytime[4])
    mydate='%d - %d - %d'%(mytime[0],mytime[1],mytime[2])
    return mydate,myhour,xingqi[mytime[6]],mytime[1],mytime[2],mytime[3]+8



def show_img(m):
    with open("selwe_dat/"+str(m)+".dat", "rb") as f:
        for row in range(64):
            buffer = f.read(128)
            tft.show_img(160,row+30,224,row+30, buffer)

def star_img(m):
    with open("star_dat/star"+str(m)+".dat", "rb") as f:
        for row in range(64):
            buffer = f.read(128)
            tft.show_img(30,row+20,94,row+20, buffer)
            
def tianqi():
    data = urequests.get("https://api.seniverse.com/v3/weather/now.json?key=S4RyXhsHlxmLksBp9&location=ningbo&language=en&unit=c")
    weth=ujson.loads(data.text)
    print(weth)
    return weth["results"][0]["now"]["text"]
    
    
def tianqi_show(m):
    if str(tianqi())!='Fair' and str(tianqi())!='Partly Cloudy' and str(tianqi())!='Mostly Cloudy':
        show_img(str(tianqi()))       
    else:
        if m>=6 and m<=18:
            show_img(str(tianqi()))
        else:
            show_img('ye'+tianqi())
        
                

if __name__=="__main__":
    
    wifi_main()
    ntptime.host = 'ntp.ntsc.ac.cn'
    tfttext.hline(0,185,240,st7789py.color565(0,0,255))
    tfttext.vline(119,0,185,st7789py.color565(255,0,0))
    
    start_time = time.time()
    timeshow=timeconfirm()
    tfttext.text(font,timeshow[0],10,204,st7789py.color565(128,0,128),st7789py.color565(0,0,0))
    tfttext.text(font,timeshow[1],80,246,st7789py.color565(255,1922,203),st7789py.color565(0,0,0))
    tfttext.text(font1,timeshow[2],55,288,st7789py.color565(255,128,0),st7789py.color565(0,0,0))
    if timeshow[4]<=23:
        if timeshow[3]>=4:
            star_img(timeshow[3]-3)
        else:
            star_img(timeshow[3]+9)
    
    else: 
        if timeshow[3]>=4:
            star_img(timeshow[3]-2)
        else:
            star_img(timeshow[3]+10)
    tianqi_show(int(timeshow[5]))
    while True:
        timeshow=timeconfirm()
        tfttext.text(font,timeshow[0],6,204,st7789py.color565(128,0,128),st7789py.color565(0,0,0))
        tfttext.text(font,timeshow[1],80,246,st7789py.color565(255,1922,203),st7789py.color565(0,0,0))
        tfttext.text(font1,timeshow[2],55,288,st7789py.color565(255,128,0),st7789py.color565(0,0,0))
        if timeshow[4]<=23:
            if timeshow[3]>=4:
                star_img(timeshow[3]-3)
            else:
                star_img(timeshow[3]+9)
    
        else: 
            if timeshow[3]>=4:
                star_img(timeshow[3]-2)
            else:
                star_img(timeshow[3]+10)
        if time.time()-start_time>=1200:
            tianqi_show(int(timeshow[5]))
            start_time=time.time()
        else:
            pass
    
   


说说不足吧:第一个就是wifi的接入,在程序里面是写定住的,其实我本来的想法是再弄个蓝牙,然后通过蓝牙输入wifi的名称和密码,尚在开发中,当然也希望有会的大佬能和我交流下。第二个就是,我嫌做中文字模太麻烦,所以一直在投机取巧,也希望有大佬能在我程序里面改进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大初哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值