查看: 847|回复: 2

[评测分享] 【更适合初学者的开发板ELF 1】14-PWM测试及音乐演奏

[复制链接]
  • TA的每日心情
    慵懒
    前天 10:40
  • 签到天数: 85 天

    连续签到: 2 天

    [LV.6]常住居民II

    发表于 2023-12-9 21:55:54 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 stm1024 于 2023-12-9 22:10 编辑

    0. 前言
    脉冲宽度调制(PWM)是一种模拟控制方式,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,因此也是很多嵌入式开发者入门阶段的必修课,从最简单的8051到各种高级的MCU/MPU,都可以实现PWM功能,只是有的是通过定时器翻转GPIO模拟,有的是具有专门的PWM功能模块(例如NXP就有SCT之类的),通过应用PWM实现诸如亮度调节,呼吸灯,波形模拟之类的功能,应该是很多开发者都折腾过的过程,还有一个应用的比较多的就是搞一些智能小车通过PWM控制电机调速等,可以说是一个十分实用而又好用的功能

    1. 硬件资源机软件环境
    ELF-1开发板板载蜂鸣器为无源蜂鸣器, 由 PWM 进行控制,电路原理见下图:
    000.png

    111.png
    硬件上使用的是PWM2,不过快速启动手册3.1.14中,软件使用的是PWM0,这个有点儿小迷糊哎:

    222.png

    按照手册的测试,蜂鸣器发声,更改频率可以调整声调,更改占空比可以调整音调大小,可以说是十分简单。
    当然,如果写到这里就结束了,可以认为本帖完全是一篇水贴(我没有针对谁)。
    试用嘛,就要多折腾,整点活儿出来,做点不一样的东西。

    2. 规划及程序编写
    当我还是菜鸡的时候(现在也是),我比较喜欢使用有源蜂鸣器,这样通个高或者低电平就可以响,现在嘛,更喜欢无源蜂鸣器,因为可以修改它的频率,实现不同的声调了。手册的实例明显提供了修改周期(也就是频率的倒数),因此,实现不同声调是完全可行的,所以我打算用蜂鸣器来播放点儿音乐,就像小时候那种音乐贺卡一样。
    说干就干,先准备点而音乐之声。
    先瞄准最简单的乐谱,那就《两字老虎》了,我可以在钢琴上演奏它,也代表了我的音乐巅峰水平【低调】。
    333.png
    此外就是找资料,看看声调是啥情况:
    2023-12-09_203155.png
    看样子是十二音律还是啥,高音阶、中音阶和低音阶是两倍的关系。有了这些以后,就可以整活了。代码如下:
    555.png
    其中tones就是咱们得曲子,而KEY就是音调。
    3. 测试及效果
    编译、下载,改权限就不用赘述了,需要使用命令:
    1. chmod a+x ttg
    2. echo 0 > /sys/class/pwm/pwmchip1/export
    3. ./ttg
    复制代码
    然后就可以听到演奏的效果了,并在终端中显示出来:
    666.png
    听起来前面还不错,感觉后面不太准确。
    如果再夹一张纸,就可以做成电子贺卡了。

    OK,今天测试就到这里。
    最后附赠编译好的,可以直接在ELF-1开发板上运行的程序: music.zip (8.97 KB, 下载次数: 0)
    回复

    使用道具 举报

    该用户从未签到

    发表于 2023-12-19 16:44:17 | 显示全部楼层
    硬件和软件资料中使用的都是PWM2
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2023-12-19 16:44:57 | 显示全部楼层
    硬件和软件资料中使用的都是PWM2
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-5-2 21:24 , Processed in 0.143330 second(s), 21 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.