3774| 4
|
[项目] 百灵鸽丨随身MP3(上) |
本帖最后由 Nplus实验室 于 2019-12-4 09:14 编辑 小小掌控,无限智造。大家好,这是N+频道,我是播报员小何。 自从鸽子出道以来,它动听的歌声就被大家关注着。 朱现伟老师总结出了与这位网红“套近乎”的方式: 掌握正确的方式,鸽子可是平易近人的噢。 听歌一时爽,一直听歌一直爽。记得我小学的时候,用mp3听歌可是一件非常潮流、非常酷的事情。随着科技的发展,mp3、mp4都已经淡出了时代的舞台。今天我们一起用掌控板和百灵鸽制作一个mp3随身听,踏上时光之旅,拾忆…… Step1 添加播放/停止键 这一功能实现起来并不难,添加两个判断:如果P键被触摸,播放音频;如果N键被触摸,音频停止。 Step2 用A/B键控制上/下一首 这个功能意味着,要存储好多首歌曲的MP3地址及歌曲名称,并且地址与名称要能够对应起来。这时候我首先想到了用字典来保存,因为字典的“键”和“值”刚好是一一对应的关系。 数据储存确实很一目了然,下一步就要调用了。可是我眉头一皱,发现事情好像并不是那么简单。 现在只使用A/B键,设想的方案应该是:通过A/B键控制序号的增/减,通过序号可以找到歌曲地址和对应的歌曲名称。然而字典这个数据类型是无序的,如果我想调用某一个“值”,那我必须输入对应的“键”。总结:不适用,白忙活,果然万事开头难,不气馁,擦干泪水继续冲。 Python中有序的数据类型有:列表、元组、字符串。字符串是以每一个字符作为一个元素,歌曲名称和歌曲地址都是多字符组成的,所以pass掉字符串。 剩下列表和元组,二者的区别在于,列表是开源的,可以添加修改删除;元组是闭源的,只能进行访问。 因为歌曲的编辑是在编程时完成的,所以使用二者并没有区别。秉承着开源造万物的精神,就是你了,列表! 需要新建两个列表:name和song,一个序号变量:x 注意两个列表的顺序要对应,列表序号从0开始。 那么接下来的播放及显示歌曲名称要改为: 加上A/B键控制: 刷入运行,下面就是见证奇迹的时刻! Emmm,好像出现不少问题: 1、 按A/B键歌曲不切换,再按下P键才切换 2、 歌曲切换时,歌曲名称不更新。 3、 最后一首后没有循环回第一首 还真是万事开头难,后面一直难…… Step3 解决问题 伟大的毛主席曾经说过:方法总比问题多。 Question1:按A/B键歌曲不切换,再按下P键才切换 分析:A/B键只改变了歌曲序号,并没有重新播放歌曲。 改进: 刷入测试,成功! Question2:歌曲切换时,歌曲名称不更新 分析:程序缺少重复刷新屏幕 改进: 这里我计算了下歌曲名称的X坐标,让歌曲名称自动居中 刷入测试,成功!成功! Question3:最后一首后没有循环回第一首,并且报错。 分析: 控制台提示是96行出错,错误类型是IndexError(索引错误):listindex out of range。意思就是列表的序号超出范围。 96行的代码: 是与显示歌曲名称相关的。A/B键增/减序号时,由于没有限制,把序号超过列表索引最大值或最小值。 改进: 注意:序号最小值为0,列表长度最小值为1,两者要对应起来,所以列表长度要-1 刷入测试,成功!成功!成功! 至此,大问题都已经解决,百灵鸽随身听基本能够正常使用。可是我贼心不死,掌控板有三轴加速度传感器这么酷炫的东西怎么能不用上?继续撸起袖子干 Step4 甩动切换歌曲 苇蓬疏薄漏斜阳,天色晚,饥乏交迫,请看下一篇详解,嘻嘻(厚脸皮) |
注意:序号最小值为0,列表长度最小值为1,两者要对应起来,所以列表长度要-1 刷入测试,成功!成功!成功! 至此,大问题都已经解决,百灵鸽随身听基本能够正常使用。可是我贼心不死,掌控板有三轴加速度传感器这么酷炫的东西怎么能不用上?继续撸起袖子干 Step4 甩动切换歌曲 苇蓬疏薄漏斜阳,天色晚,饥乏交迫,请看下一篇详解,嘻嘻(厚脸皮) |
注意:序号最小值为0,列表长度最小值为1,两者要对应起来,所以列表长度要-1 刷入测试,成功!成功!成功! 至此,大问题都已经解决,百灵鸽随身听基本能够正常使用。可是我贼心不死,掌控板有三轴加速度传感器这么酷炫的东西怎么能不用上?继续撸起袖子干 Step4 甩动切换歌曲 苇蓬疏薄漏斜阳,天色晚,饥乏交迫,请看下一篇详解,嘻嘻(厚脸皮) |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed