pal*_*ako 6 c microcontroller electronics atmega arduino
如果我要编程一个微控制器(ATMega128)与扬声器播放一个真实的话,我该怎么做?
我是否需要使用数字/模拟转换器发送不同的幅度值,或者频率变化是否足够?在任何情况下,我如何编码扬声器需要接收的频率和幅度值?我需要某种频率复用吗?我不是说用扬声器制作简单的声音,就像一个音符然后另一个音符.我想播放一首真正的歌曲,包括所有乐器,人声等.
假设您有一个未压缩的8位22.1 kHz单声道文件:
1)
去掉标题2)每1/22,100秒:
2.1)读取8位
2.2)使用DAC将其转换为扬声器的电压范围
2.3)将其发送到扬声器
这将为您提供[22.1 kHz/8位/单声道]质量的声音,是一种播放逼真样本的简单方法.
所有频率都是不同合成器所必需的.例如,PC扬声器实际上只有一点.为了获得不同的振幅(比"无"和"最大"),可能需要一些技巧,例如脉冲宽度调制(如你所说,移动频率,因此扬声器的振膜有效地具有比两个更多的位置).
但你不需要为此烦恼.您需要做的就是在扬声器中每秒喷出大约22,100或4400个声音样本,每个样本使用8或16位来表示振幅.