查看: 766|回复: 4

[项目] 百灵鸽丨随身MP3(上)

[复制链接]
本帖最后由 Nplus实验室 于 2019-12-4 09:14 编辑

小小掌控,无限智造。大家好,这是N+频道,我是播报员小何。
自从鸽子出道以来,它动听的歌声就被大家关注着。
朱现伟老师总结出了与这位网红“套近乎”的方式:
掌握正确的方式,鸽子可是平易近人的噢。


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

Step1 添加播放/停止键

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

       这个功能意味着,要存储好多首歌曲的MP3地址及歌曲名称,并且地址与名称要能够对应起来。这时候我首先想到了用字典来保存,因为字典的“键”和“值”刚好是一一对应的关系。
2.png
数据储存确实很一目了然,下一步就要调用了。可是我眉头一皱,发现事情好像并不是那么简单。
       现在只使用A/B键,设想的方案应该是:通过A/B键控制序号的增/减,通过序号可以找到歌曲地址和对应的歌曲名称。然而字典这个数据类型是无序的,如果我想调用某一个“值”,那我必须输入对应的“键”。总结:不适用,白忙活,果然万事开头难,不气馁,擦干泪水继续冲。
       Python中有序的数据类型有:列表、元组、字符串。字符串是以每一个字符作为一个元素,歌曲名称和歌曲地址都是多字符组成的,所以pass掉字符串。
       剩下列表和元组,二者的区别在于,列表是开源的,可以添加修改删除;元组是闭源的,只能进行访问。
       因为歌曲的编辑是在编程时完成的,所以使用二者并没有区别。秉承着开源造万物的精神,就是你了,列表!

       需要新建两个列表:name和song,一个序号变量:x
3.png
注意两个列表的顺序要对应,列表序号从0开始。
那么接下来的播放及显示歌曲名称要改为:
4.png
加上A/B键控制:
5.png
刷入运行,下面就是见证奇迹的时刻!
Emmm,好像出现不少问题:
1、 按A/B键歌曲不切换,再按下P键才切换
2、 歌曲切换时,歌曲名称不更新。
3、 最后一首后没有循环回第一首

还真是万事开头难,后面一直难……
6.png
Step3 解决问题
       伟大的毛主席曾经说过:方法总比问题多。
  Question1:按A/B键歌曲不切换,再按下P键才切换
    分析:A/B键只改变了歌曲序号,并没有重新播放歌曲。

    改进:
7.png
刷入测试,成功!
  Question2:歌曲切换时,歌曲名称不更新

    分析:程序缺少重复刷新屏幕
8.png
    改进:
9.png
    这里我计算了下歌曲名称的X坐标,让歌曲名称自动居中
    刷入测试,成功!成功!
  Question3:最后一首后没有循环回第一首,并且报错。

       分析:
10.png
      控制台提示是96行出错,错误类型是IndexError(索引错误):listindex out of range。意思就是列表的序号超出范围。

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

       改进:
12.png
    注意:序号最小值为0,列表长度最小值为1,两者要对应起来,所以列表长度要-1
       刷入测试,成功!成功!成功!
       至此,大问题都已经解决,百灵鸽随身听基本能够正常使用。可是我贼心不死,掌控板有三轴加速度传感器这么酷炫的东西怎么能不用上?继续撸起袖子干
Step4 甩动切换歌曲
       苇蓬疏薄漏斜阳,天色晚,饥乏交迫,请看下一篇详解,嘻嘻(厚脸皮)

gada888  版主

发表于 2019-11-25 14:40:51

好贴
回复

使用道具 举报

zhangxunyu9876  学徒

发表于 2020-1-17 16:24:01

注意:序号最小值为0,列表长度最小值为1,两者要对应起来,所以列表长度要-1
       刷入测试,成功!成功!成功!
       至此,大问题都已经解决,百灵鸽随身听基本能够正常使用。可是我贼心不死,掌控板有三轴加速度传感器这么酷炫的东西怎么能不用上?继续撸起袖子干
Step4 甩动切换歌曲
       苇蓬疏薄漏斜阳,天色晚,饥乏交迫,请看下一篇详解,嘻嘻(厚脸皮)
回复

使用道具 举报

zhangxunyu9876  学徒

发表于 2020-1-17 16:24:03

注意:序号最小值为0,列表长度最小值为1,两者要对应起来,所以列表长度要-1
       刷入测试,成功!成功!成功!
       至此,大问题都已经解决,百灵鸽随身听基本能够正常使用。可是我贼心不死,掌控板有三轴加速度传感器这么酷炫的东西怎么能不用上?继续撸起袖子干
Step4 甩动切换歌曲
       苇蓬疏薄漏斜阳,天色晚,饥乏交迫,请看下一篇详解,嘻嘻(厚脸皮)
回复

使用道具 举报

gada888  版主

发表于 2020-1-23 13:35:53

支持中文字库,挺好
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2020 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail