PWM音频,从SD卡读取数据

时间:2012-06-03 22:45:21

标签: c++ audio arduino pwm

目前我正在研究这个Arduino / Nanode项目,我们想要播放存储在SD卡上的WAV文件集合,时钟OCR0上有PWM。 - 我可以完美地播放PWM,从Arduino网站上Michael Smith的草图开始:http://www.arduino.cc/playground/Code/PCMAudio - 我能够正确读取SD卡并将数据转换为8位整数,当我将它们打印到串行窗口时看起来是正确的。

我遇到的问题是当我将这些整数输入到时钟的PWM值时 正如我所说,当我使用原始PWM音频文件并将我自己的WAV文件转换为.h文件(通过wav2c)时,它可以工作,听起来不错。当我正在读SD卡时,它会显示正确的值。当我正在直接阅读WAV文件时(以及我在此处发布的最新版本中尝试的内容),它显示正确,因为我将它们转换为文本文件并阅读这些文件。当我从文本文件中输入整数时,我会听到类似喇叭的声音,就像PWM使用错误的值输出一样。

我猜这个问题是在将数据转换为Atmega使用的字节数据的某个地方。但我没有任何线索在哪里寻找或如何解决它。我注意到原始文件使用unsigned char,我在使用uint_t8。我试图施放它们但它没有用。

有没有人有这方面的经验?或者任何线索我怎么可能解决这个问题?

非常感谢你的帮助和时间!

的Jeroen

PS:下面是我的代码片段,我在其中阅读文本文件并将其转换为整数。它们总是由3个字符组成;例如,值21在文件中打印为021,并用逗号分隔,脚本跳过第4个myFile.read()

myFile = SD.open(FileName);

char sampleTMP[4];

sampleTMP[0] = (myFile.read());
sampleTMP[1] = (myFile.read());
sampleTMP[2] = (myFile.read());
sampleTMP[3] = 0;
myFile.read();

unsigned char ss;
ss = atoi(sampleTMP);

Serial.println(ss, DEC);

OCR0A = ss;
OCR0B = ss;

0 个答案:

没有答案