Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从SD卡读取数据的PWM音频_C++_Audio_Arduino_Pwm - Fatal编程技术网

C++ 从SD卡读取数据的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卡时,它会显示正确的值。当我

目前我正在进行这个Arduino/Nanode项目,我们希望播放存储在SD卡上的WAV文件集合,时钟OCR0上有PWM。 -我能够完美地播放PWM,从Arduino网站上迈克尔·史密斯的草图开始: -我能够正确读取SD卡,并将数据转换为8位整数,当我将它们打印到串行窗口时,它们看起来是正确的

问题是当我将这些整数输入时钟的PWM值时。
正如我所说,当我使用原始的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;