C++ 从SD卡读取数据的PWM音频
目前我正在进行这个Arduino/Nanode项目,我们希望播放存储在SD卡上的WAV文件集合,时钟OCR0上有PWM。 -我能够完美地播放PWM,从Arduino网站上迈克尔·史密斯的草图开始: -我能够正确读取SD卡,并将数据转换为8位整数,当我将它们打印到串行窗口时,它们看起来是正确的 问题是当我将这些整数输入时钟的PWM值时。C++ 从SD卡读取数据的PWM音频,c++,audio,arduino,pwm,C++,Audio,Arduino,Pwm,目前我正在进行这个Arduino/Nanode项目,我们希望播放存储在SD卡上的WAV文件集合,时钟OCR0上有PWM。 -我能够完美地播放PWM,从Arduino网站上迈克尔·史密斯的草图开始: -我能够正确读取SD卡,并将数据转换为8位整数,当我将它们打印到串行窗口时,它们看起来是正确的 问题是当我将这些整数输入时钟的PWM值时。 正如我所说,当我使用原始的PWM音频文件,并将自己的WAV文件转换为.h文件(通过wav2c)时,它工作正常,听起来不错。当我读取SD卡时,它会显示正确的值。当我
正如我所说,当我使用原始的PWM音频文件,并将自己的WAV文件转换为.h文件(通过wav2c)时,它工作正常,听起来不错。当我读取SD卡时,它会显示正确的值。当我直接读取WAV文件时,以及(我在这里发布的最新版本中尝试的内容)将其转换为文本文件并读取时,它显示正确。当我输入文本文件中的整数时,我会听到类似喇叭的声音,就像PWM使用错误的值输出一样 我猜问题在于将数据转换成Atmega使用的字节数据。但我不知道该去哪里找,也不知道该怎么解决。我注意到原始文件使用了unsigned char,而我使用的是uint_t8。我试着投下他们,但没用 有人有这方面的经验吗?或者我怎么可能解决这个问题的线索 非常感谢你的帮助和时间 杰罗恩 PS:下面是我的代码片段,我在其中通读文本文件并将它们转换为整数。它们总是由3个字符组成;例如,值21在文件中打印为021,并用逗号分隔,脚本用第4个myFile.read()跳过该逗号
就我所知,
atoi
为什么要对已经是二进制形式的数据执行操作?将ss
分配给两个地址是否合适?这是从单声道输入获得立体声吗?我打赌你的SD访问和转换会弄乱PWM的计时
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;