604|4

4

帖子

3

TA的资源

一粒金砂(中级)

楼主
 

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

 

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

 

第一部分

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

 

第二部分

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

 

效果展示:

 

汇总代码如下

 

婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繘鏌i幋锝嗩棄闁哄绶氶弻娑樷槈濮楀牊鏁鹃梺鍛婄懃缁绘﹢寮婚敐澶婄闁挎繂妫Λ鍕⒑閸濆嫷鍎庣紒鑸靛哺瀵鈽夊Ο閿嬵潔濠殿喗顨呴悧濠囧极妤e啯鈷戦柛娑橈功閹冲啰绱掔紒妯哄婵犫偓娓氣偓濮婅櫣绮欑捄銊ь唶闂佸憡鑹鹃鍥╂閻愬搫绠i柨鏃傛櫕閸橀亶姊洪棃娴ㄥ綊宕曢柆宥呯劦妞ゆ巻鍋撴繛灏栤偓鎰佸殨濠电姵纰嶉弲鎻掝熆鐠虹尨鍔熸い鏃€甯¢幃妤冩喆閸曨剛顦ュ┑鐐茬湴閸婃繂鐣烽鈷氭椽顢旈崨顏呭闂備礁鎲$换鍌溾偓姘卞厴瀹曟洟骞囬悧鍫㈠幗濠德板€撶欢鈥斥枔濮椻偓閺岀喖鐛崹顔句患闂佸疇妫勯ˇ鍨叏閳ь剟鏌eΟ娲诲晱闁告艾鎳樺缁樻媴閾忕懓绗¢梺鍛婃⒐濞茬喖銆佸棰濇晣闁绘劏鏅滈悘渚€姊洪棃娑氬妞わ缚鍗抽崺娑㈠箣閻愮數顔曢梺鐓庛偢椤ゅ倿宕靛▎鎰垫闁绘劖鎯屽▓婊堟煛瀹€鈧崰鏍箖閻戣姤鍋嬮柛顐g箖閻忓酣鏌f惔銏╁晱闁哥姵鐗犻垾锕傛倻閽樺鐣洪梺闈涚箞閸婃牠骞嗛悙鐑樼厱闁挎棁顕у璺ㄧ磼鏉堛劎鍙€婵﹦绮粭鐔煎焵椤掆偓宀h儻顦撮柟骞垮灲楠炴帡骞橀弶鎴濅紟闂備焦鐪归崹褰掑箟閿熺姴纾归柛顐f礃閻撴洘銇勯幇顔夹㈤柛鏃€绮撻弻宥夋煥鐎n亞浼岄梺鍝勬湰缁嬫垿鍩為幋锕€骞㈡俊銈咃梗閹絾淇婇悙顏勨偓鏇犳崲閸儱纾块柣銏⑶归拑鐔哥箾閹寸偟鎳勯柛搴e枛閺屻劌鈹戦崱姗嗘!濠殿噯绲介悧鎾诲箖濡も偓閳绘捇宕归鐣屼邯婵$偑鍊ら崣鍐绩鏉堛劎鈹嶅┑鐘叉搐缁犵懓霉閿濆懏鎲搁柛妯绘倐濮婅櫣绮欓幐搴㈡嫳闂佹椿鍙庨崰姘舵嚍鏉堛劎顩烽悗锝庡亐閹风粯绻涙潏鍓у埌闁硅櫕鐟ㄩ妵鎰板箳閹存繄褰夋俊鐐€栫敮鎺楀磹婵犳碍鍎楁繛鍡樻尰閻撴瑩寮堕崼鐔峰姢闁伙附绮撻弻鈩冩媴缁嬪簱鍋撻崸妤€钃熼柕濞炬櫆閸嬪棝鏌涚仦鍓р槈妞ゅ骏鎷�
  • 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测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

245

帖子

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/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
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
快速回复 返回顶部 返回列表