593|4

4

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow me第2期】任务汇总 [复制链接]

 

再次感谢DigiKey和EEworld组织的Follow me 第2期活动,让我零成本入门Adafruit ESP32-S3 TFT Feather

 

第一部分

汇报视频- 【得捷电子Follow me第2期】视频汇报-EEWORLD大学堂

 

第二部分

此处我将四个任务整合在了一个文件里,便于提交,源码中有分别完成的任务

 

效果展示:

 

汇总代码如下

 

import board, displayio
import rtc, wifi, ssl
import time as Time
import socketpool
import neopixel
from digitalio import DigitalInOut, Direction, Pull
import adafruit_imageload
import adafruit_ntp
import adafruit_requests
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font

##任务2.1 创建热点
#任务2.2链接wifi部分外置在settings.toml,详情源码包内查看
wifi.radio.start_ap('Follow_me_Tasks', 'EEworld00')#简简单单一行即可
print("Hotspot Launched")#提示

##任务1&4.1前置代码+放置标签
#(因为我设计的时钟也有中文,所以此处不再单独完成任务1,源码包中有按项目拆分的文件)
display = board.DISPLAY #定义屏幕
group = displayio.Group() #定义显示组

def lableimage(path): #加载图片标签函数
    image, palette = adafruit_imageload.load(path)
    return displayio.TileGrid(image, pixel_shader=palette)

#加载必要字体
font = bitmap_font.load_font("/font/sytq_16.pcf")#此字体包借用自死龙哥walker2048
timef = bitmap_font.load_font("/font/time.bdf")

def labletext(x, y, text, font=font, color=0x000000): #加载文字标签函数
    return label.Label(font, text=text, color=color, x=x, y=y)

#将图片添加到显示组
grid = lableimage("/img/ddw.png") #设置图片标签
group.append(grid) #加入显示组

#将文字添加到显示组
#设置文字标签
date = labletext(48, 20, "0月0日")
day = labletext(150, 20, "周八")
time = labletext(22, 58, "00:00", font=timef)
weather = labletext(12, 112, "?")
temp = labletext(198, 112, "00°")
#加入显示组
group.append(date)
group.append(day)
group.append(time)
group.append(weather)
group.append(temp)


##任务4.2 联网获取
pool = socketpool.SocketPool(wifi.radio) #初始化
ntp = adafruit_ntp.NTP(pool, tz_offset=8, server="ntp.aliyun.com") #校正时间
rtc.RTC().datetime = ntp.datetime #校正时间

requests = adafruit_requests.Session(pool, ssl.create_default_context()) #定义请求

def get_weather():#获取天气函数
    city = "120101"#地区代码
    key = "cc46b036804b84ce5b7b76d9a0511c68"#此处自行填写
    url = "https://restapi.amap.com/v3/weather/weatherInfo?city=" + city + "&key=" + key
    response = requests.get(url)#获取
    json_resp = response.json()
    response.close()
    return json_resp["lives"][0]["temperature"], json_resp["lives"][0]["weather"]#提取参数

##任务3.1 基础设置
pixel_pin = board.NEOPIXEL
pixels = neopixel.NeoPixel(pixel_pin, 1, brightness=0.1, auto_write=False) #定义像素

def pixelsetcolor(c):#改变颜色函数,针对单个像素量身定制
    pixels[0] = c
    pixels.show()

#设置按钮
btn = DigitalInOut(board.BOOT0)
btn.direction = Direction.INPUT
btn.pull = Pull.UP

color = 0

days = ["周一","周二","周三","周四","周五","周六","周日"]
state = "init"

#主循环
while True:
    ##任务4.3 刷新标签
    n = Time.localtime()
    if (state == "init" or n.tm_min == 0):#每小时刷新一次
        date.text = "%d月%d日" % (n.tm_mon, n.tm_mday)
        day.text = days[n.tm_wday]
        t, w = get_weather()
        weather.text = w
        temp.text = "%s°" % (t)
        state = "running"
    #每次循环刷新
    time.text = "%02d:%02d" % (n.tm_hour, n.tm_min)
    display.show(group)

    ##任务3.2 循环颜色
    if not btn.value:
        if color % 8 == 0:
            pixelsetcolor(0xFF0000)
            print("Pixel is R")
        elif color % 8 == 1:
            pixelsetcolor(0x00FF00)
            print("Pixel is G")
        elif color % 8 == 2:
            pixelsetcolor(0x0000FF)
            print("Pixel is B")
        elif color % 8 == 3:
            pixelsetcolor(0xFFFF00)
            print("Pixel is Yellow")
        elif color % 8 == 4:
            pixelsetcolor(0xFF00FF)
            print("Pixel is Megenta")
        elif color % 8 == 5:
            pixelsetcolor(0x00FFFF)
            print("Pixel is Cyan")
        elif color % 8 == 6:
            pixelsetcolor(0xFFFFFF)
            print("Pixel is Light")
        elif color % 8 == 7:
            pixelsetcolor(0x000000)
            print("Pixel is Dark")
        color += 1
    else:
        pass
    Time.sleep(0.2)#此处为适配按键led切换设置为0.2秒,如果只是时钟设置为1秒即可

 

第三部分

源码下载:download.eeworld.com.cn/detail/bjm212501/629534

最新回复

报错,愣是没看到错误是什么,咋办。就知道这个lives的key错了 Traceback (most recent call last):   File "code.py", line 94, in <module>   File "code.py", line 67, in get_weather KeyError: lives     详情 回复 发表于 2023-10-11 23:05
点赞 关注
 
 

回复
举报

1万

帖子

2853

TA的资源

管理员

沙发
 

赞~恭喜楼主又学会了一个新技能呀

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

231

帖子

3

TA的资源

一粒金砂(高级)

板凳
 

一目了然,很详细


 
 
 

回复

2

帖子

1

TA的资源

一粒金砂(中级)

4
 

报错,愣是没看到错误是什么,咋办。就知道这个lives的key错了

Traceback (most recent call last):
  File "code.py", line 94, in <module>
  File "code.py", line 67, in get_weather
KeyError: lives
 

 
 
 

回复

4

帖子

3

TA的资源

一粒金砂(中级)

5
 
eew_HC2nzN 发表于 2023-10-11 23:05 报错,愣是没看到错误是什么,咋办。就知道这个lives的key错了 Traceback (most recent call last): &n ...

因为你要用自己的key呀,这个key是我的,打包的时候忘改了,所以我把它注销了,需要自己申请哦

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表