设为首页收藏labplus社区产品资料库
0
积分值+2
0
掌控币+1
0  关注
2  粉丝
4  帖子
Neil、
2019年11月14日

#拓展应用#百灵鸽丨随身MP3(一)

小小鸽子,无限创造。大家好,这是N+频道。

自从鸽子出道以来,它动听的歌声就被大家关注着。

朱现伟老师总结出了与这位网红“套近乎”的方式:

让鸽子开口唱起来-1:https://www.labplus.cn/posts/5dcc1f2c8591053bbed5b013

让鸽子开口唱起来-2:https://www.labplus.cn/posts/5dcc25388591053bbed5b019

掌握正确的方式,鸽子可是平易近人的噢。

正文

听歌一时爽,一直听歌一直爽。记得我小学的时候,用mp3听歌可是一件非常潮流、非常酷的事情。随着科技的发展,mp3、mp4都已经淡出了时代的舞台。今天我们一起用掌控板和百灵鸽制作一个mp3随身听,踏上时光之旅,拾忆……

Step1 添加播放/停止键

这一功能实现起来并不难,添加两个判断:如果P键被触摸,播放音频;如果N键被触摸,音频停止。Step2 用A/B键控制上/下一首

这个功能意味着,要存储好多首歌曲的MP3地址及歌曲名称,并且地址与名称要能够对应起来。这时候我首先想到了用字典来保存,因为字典的“键”和“值”刚好是一一对应的关系。


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(索引错误):list index out of range。意思就是列表的序号超出范围。

96行的代码:


        是与显示歌曲名称相关的。A/B键增/减序号时,由于没有限制,把序号超过列表索引最大值或最小值。

改进:


          注意:序号最小值为0,列表长度最小值为1,两者要对应起来,所以列表长度要-1

          刷入测试,成功!成功!成功!

          至此,大问题都已经解决,百灵鸽随身听基本能够正常使用。可是我贼心不死,掌控板有三轴加速度传感器这么酷炫的东西怎么能不用上?继续撸起袖子干

Step4 甩动切换歌曲

苇蓬疏薄漏斜阳,天色晚,饥乏交迫,请看下一篇详解,嘻嘻(厚脸皮)……

4

点赞

1674 次阅读1 条评论4 人赞4 人订阅
1条评论