目前我正在处理这个 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 使用的字节数据的某个地方。但我不知道在哪里看或如何解决它。我注意到原始文件在我使用 uint_t8 的地方使用无符号字符。我试图投射它们,但它不起作用。
有没有人有这方面的经验?或者任何线索我怎么可能解决这个问题?
非常感谢您的帮助和时间!
杰伦
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;