ESP32(MicroPython) TFT LCD多功能显示(RTC+DHT22)

本程序内容与之前的类似,传感器换成DHT22,测量温湿度更符合日常使用的需要。逻辑上的一项改动是测量的温度和湿度值统一保留一位小数。

代码如下

from ili934xnew import ILI9341, color565
from machine import Pin, SPI
import m5stack
import tt14
import glcdfont
import tt14
import tt24
import tt32
from machine import RTC
import time
import dht
from machine import Timer
from machine import PWM
import DS1302

#定义RTC控制对象
rtc=RTC()
#定义DS1302控制对象
ds1302=DS1302.DS1302(clk=Pin(13),dio=Pin(12),cs=Pin(15))
#定义星期
week=("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")
#定义DHT22控制对象
dht22=dht.DHT22(Pin(21))
power = Pin(m5stack.TFT_LED_PIN, Pin.OUT)
power.value(1)

spi = SPI(
    2,
    baudrate=80000000,
    miso=Pin(m5stack.TFT_MISO_PIN),
    mosi=Pin(m5stack.TFT_MOSI_PIN),
    sck=Pin(m5stack.TFT_CLK_PIN))

display = ILI9341(
    spi,
    cs=Pin(m5stack.TFT_CS_PIN),
    dc=Pin(m5stack.TFT_DC_PIN),
    rst=Pin(m5stack.TFT_RST_PIN),
    w=320,
    h=240,
    r=3)

led=PWM(Pin(2),freq=4000,duty=20)
duty=0
flag=0
#定时器0中断函数
def time0_irq(time0):
    global duty
    global flag
    if duty==20 :
        flag=0
    if duty==1020 :
        flag=1    
    if flag==0 :
        duty+=1
        led.duty(duty)
    if flag==1 :
        duty-=1
        led.duty(duty)
        
time0=Timer(0)  #创建time0定时器对象
time0.init(period=1,mode=Timer.PERIODIC,callback=time0_irq)

rtc_time=rtc.datetime()
ds_time=ds1302.DateTime()
if rtc_time[0]==ds_time[0] : #在电脑启动时会自动校准RTC,判断RTC时间没有重置时同步校准DS1302
    ds1302.DateTime([rtc_time[0],rtc_time[1],rtc_time[2],rtc_time[3],rtc_time[4],rtc_time[5],rtc_time[6]])
if rtc_time[0]!=ds_time[0] : #如果程序上电启动,RTC会因断电重置,此时用DS1302校准RTC
    rtc.datetime((ds_time[0],ds_time[1],ds_time[2],ds_time[3],ds_time[4],ds_time[5],ds_time[6],0))    
fonts = [tt32]
display.erase()
time.sleep(1)
while True:
    display.set_pos(25,35)
    for ff in fonts:
        rtc_time=rtc.datetime()
        dht22.measure()  #调用DHT类库中测量数据的函数
        temperature = dht22.temperature()
        humidity = dht22.humidity()
        temperature=round(temperature,1) #保留一位小数
        humidity=round(humidity,1)
        text = str(rtc_time[0])+'-'+str(rtc_time[1])+'-'+str(rtc_time[2])+'  '+str(week[rtc_time[3]])+'\n'+'---< '+str(rtc_time[4])+' : '+str(rtc_time[5])+' : '+str(rtc_time[6])+' >---'+'\n\n'+'temperature: '+str(temperature) + ' C'+'\n'+'humidity: '+str(humidity) + ' %'
        display.set_font(ff)
        display.print(text)
    time.sleep(0.9)
    display.erase()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要实现esp32TFT屏幕的太空人手表Micropython程序,我们需要以下步骤: 首先,需要在esp32上安装Micropython固件。可以通过将esp32与计算机连接,然后使用特定的固件烧录工具将Micropython固件烧录到esp32芯片中。 接下来,需要安装与TFT屏幕兼容的库。在Micropython中,有许多库可以选择,如ILI9341或ST7735等。安装库的方式通常是将相关库文件复制到esp32的文件系统中,以便Micropython可以加载和使用它们。 然后,编写Micropython程序来控制TFT屏幕并显示时间和其他相关信息。可以使用TFT库提供的函数来画出时钟表盘,显示当前时间,并显示与太空相关的其他信息,如星座、月球阶段等。 在程序中,需要设置时钟功能并通过与NTP服务器的通信来获取准确的时间。通过与RTC模块的连接,可以保持时间的准确性和持久性。 此外,还可以通过连接各种传感器(如温度传感器、气压传感器等)并读取相应的数据来增强功能。根据需求,还可以添加计时器、闹钟等功能。 最后,将编写的程序上传到esp32,然后将其与TFT屏幕和其他组件一起连接。在esp32启动后,程序将运行并在TFT屏幕上显示时钟和其他信息。 总之,通过安装Micropython固件、安装TFT库、编写Micropython程序以及连接所需的传感器和组件,就可以实现esp32TFT屏幕的太空人手表Micropython程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

路易斯720

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

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

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

打赏作者

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

抵扣说明:

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

余额充值