查看: 2142|回复: 5

[原创] [YL-KL26Z]播放音乐

[复制链接]
  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
    发表于 2015-2-18 20:42:16 | 显示全部楼层 |阅读模式
    YL-KL26Z带有DAC,DAC输出通过LM386驱动小喇叭。所以我们可以用它播放音乐。不过SD卡驱动还没有来得及看,所以先还是试试PWM方式播放音乐。

    数组的第一个字节用来调整播放速度,后面的数据两个字节一组,一个是时间,后面一个是频率。音量可以通过电位器调整。

    1. #include "mbed.h"

    2. PwmOut PWM(PTE30);
    3. AnalogIn POT(PTE20);

    4. #define C4 3793
    5. #define D4 3405
    6. #define E4 3304
    7. #define F4 2863
    8. #define G4 2551
    9. #define A4 2272
    10. #define B4 2025

    11. #define C5 1911
    12. #define D5 1703
    13. #define E5 1517
    14. #define F5 1432
    15. #define G5 1276
    16. #define A5 1136
    17. #define B5 1012

    18. #define C6 956
    19. #define D6 851
    20. #define E6 758
    21. #define F6 716
    22. #define G6 638
    23. #define A6 568
    24. #define B6 506

    25. #define P  1

    26. const uint16_t music[] =  
    27.         {
    28.           16,
    29.           4, E6, 4, D6, 4, E6, 4, D6, 4, E6, 4, B5, 4, D6, 4, C6,
    30.           8, A5, 4, P,  
    31.           4, C5, 4, E5, 4, A5, 8, B5, 4, P,  
    32.           4, E5, 4, G5, 4, B5, 8, C6, 4, P,
    33.           4, E5, 4, E6, 4, D6, 4, E6, 4, D6, 4, E6, 4, B5, 4, D6,
    34.           4, C6, 8, A5, 4, P,
    35.           4, C5, 4, E5, 4, A5, 8, B5, 4, P,
    36.           4, E5, 4, C6, 4, B5, 8, A5, 8, A5,         
    37.           0, P

    38.         };

    39.         
    40.         
    41. uint16_t i, dat;
    42. uint16_t LEN;
    43. double T;

    44. int main()
    45. {
    46.         LEN = sizeof(music)/2;
    47.   T = music[0];
    48.   i = 0;
    49.   
    50.   while(1) {
    51.     if(i >= LEN/2)
    52.       i = 0;
    53.     PWM = POT;
    54.     dat = music[i*2+2];
    55.     if(dat != 1)
    56.       PWM.period_us(dat);
    57.     else
    58.       PWM.period_us(10);
    59.     wait(music[i*2+1]/T);
    60.     i++;
    61.   }
    62. }
    复制代码


    效果虽然不算太好,但是熟悉的旋律还是可以听得出来的。


    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    15290
    最后登录
    1970-1-1
    发表于 2015-5-18 13:04:15 | 显示全部楼层
    多,谢分享,特来学习
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    21

    主题

    435

    帖子

    0

    高级会员

    Rank: 4

    积分
    916
    最后登录
    2020-4-8
    发表于 2015-7-31 22:22:46 | 显示全部楼层
    楼主 我是初学者,你用的什么环境写的代码啊?我用官方给的代码在MDK环境下编译怎么有BUG啊
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2023-9-17 19:57
  • 签到天数: 2310 天

    [LV.Master]伴坛终老

    107

    主题

    4270

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    10481
    最后登录
    2023-9-17
     楼主| 发表于 2015-8-1 21:12:53 | 显示全部楼层
    戏如人生 发表于 2015-7-31 22:22
    楼主 我是初学者,你用的什么环境写的代码啊?我用官方给的代码在MDK环境下编译怎么有BUG啊
    ...

    用Mbed,支持Keil、CoIDE等开发软件,官方例程我编译也有问题。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    21

    主题

    435

    帖子

    0

    高级会员

    Rank: 4

    积分
    916
    最后登录
    2020-4-8
    发表于 2015-8-2 20:23:48 | 显示全部楼层
    shaoziyang 发表于 2015-8-1 21:12
    用Mbed,支持Keil、CoIDE等开发软件,官方例程我编译也有问题。

    好的,谢谢
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-11-5 18:45
  • 签到天数: 158 天

    [LV.7]常住居民III

    26

    主题

    669

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1724
    最后登录
    2020-11-5
    发表于 2015-10-8 23:52:08 | 显示全部楼层
    谢谢分享!

    futu.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-29 18:18 , Processed in 0.128617 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表