9996| 11
|
[项目] 掌控板——超级课程表 |
本帖最后由 luyi 于 2020-5-30 13:13 编辑 “同桌,下一节什么课?” “同桌,下一节几点上课?” “同桌,今天都有什么课?” “同桌,我喜欢的科学课是星期几上的?” “同桌,现在几点了?” “同桌,今天天气怎么样?” …… 身为学生党,是否每天都会有些“二货”问同桌学霸。课程表太难记,不知道明天上什么课?没法复习? 来了!学生党福音,超级课程表新鲜出炉咯!这款课程表和传统的课程表不一样,它具有四大功能,即网络时钟功能,每日课表查询功能,课前提醒功能和每日天气查询功能。详细功能如下图所示: 一、功能描述 (1)视频演示 (2)网络时钟 如下图所示,掌控板程序运行后,默认使用仿数码管显示当前时间,并在OLED显示屏第4行显示当前日期,星期。 (3)课前提醒 如下图所示,每当时间到达上课前5分钟,就是自动进行课前提醒,在OLED显示屏显示下一节课科目,并提醒“做好上课准备”。另外,板载3颗RGB灯连续交替闪烁红蓝灯光20次,同时播放“滴——滴——”的声音,以提示下一节可上课啦,需要做好准备。 (4)每日课表查询 如下图所示,分别按下掌控板“P”、“Y”、“T”、“H”、“O”触摸按键,可以分别查询星期一——星期五的所有课程。 (5)每日天气查询 如下图所示,当掌控板触摸按键“N”被触摸时,可以调用心知天气API查询天气,显示今日最新天气情况。显示内容有最高温、最低温、白天天气现象、晚间天气现象、风向和风速等6项内容。提醒同学们把握好天气,注意增添衣物。 二、实现流程图 三、注册心知天气 (1)直接访问心知天气官网(https://www.seniverse.com/signup)注册账号,并通过邮件激活成功。 (2)登陆心知天气平台,在控制台中申请免费版,然后找到自己的私钥,需要填写在mPython程序“心知天气”积木模块中。 四、程序编写 1. 掌控板连接WIFI网络、同步网络时间、获取心知天气信息。其中,API私钥输入自己注册成功的心知天气密钥。 2. 定义列表timeStart存放每一节课的上课时间。定义列表weekDay存放中文“一、二、三、四、五、六、日”,用于组合“星期*”。 3. 定义课表列表kebiao,存放一周的课表,列表每一个元素都由一个字典构成。字典都包含了week(星期*)、time_s(当天第*节课)、content(科目)三个键。下图是录入课表一部分截图。 4. 定义变量dian,控制“时”和“分”之间的“:”闪烁。todayClass表示当天科目索引。todayClassName用于拼接当天科目,组成当天课表。 5. 获取当前时HourNow和分MinuteNow。并且判断“时”和“分”是否小于9,如果小于10,都需要在前面拼接“0”。防止出现类似2:8的情况,应该是02:08,保持时钟为4位。 6. 仿数码管显示时钟,并且使用变量dian控制“时”和“分”之间的“:”闪烁。这里尝试了多次,仍然不能达到理想的效果,最终值得使用“:”“.”交替变幻。 7. 在显示屏第4行显示当前日期和星期数。 8. 搜索课表列表(kebiao)内存储每一节课的“星期”和“上课时间”,如何和当前星期和时间一致,则RGB灯“红”、“蓝”等交替发光,并且蜂鸣器发出“滴——滴——”的响声,提醒用户。 9. 判断P、Y、T、H、O按键是否被触摸,如果被触摸则搜索并显示当天课表。 10. 当天课表搜索查询、显示代码。 11. 如果N键被触摸时,调用心知天气数据,显示“当天最高温”、“当天最低温”、“白天天气现象”、“晚上天气现象”、“风向”和“风速”共6项内容。 五、问题讨论 最后,在使用仿数码管44像素显示时间时,如何使“时”和“分”之间的“:”闪烁?请大神指点。我只能通过交替显示“:”和“.”来表示。如果您有更好的方法,请在下方留言,谢谢您。 ---------------------- 上述问题已使用区域擦除方式解决,感谢啊琛老师和文杰老师提醒。修改区域如下图 修正后代码已重新上传 |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed