3

現在、私はクロック OCR0 で PWM を使用して、SD カードに保存されている WAV ファイルのコレクションを再生したいこの Arduino/Nanode プロジェクトに取り組んでいます。- Arduino Web サイトの Michael Smith のスケッチから始めて、PWM を完全に再生できます: http://www.arduino.cc/playground/Code/PCMAudio - SD カードを正しく読み取ることができますデータをシリアルウィンドウに出力したときに正しく見える8ビット整数に変換します。

私が抱えている問題は、これらの整数をクロックの PWM 値に入力するときです。
私が言ったように、(wav2c を介して) .h ファイルに変換された独自の WAV ファイルでオリジナルの PWM オーディオ ファイルを使用している場合、それは機能し、良い音を出します。SDカードを読んでいるとき、正しい値が表示されます。私がWAVファイルを直接読んでいるとき、また(ここに投稿された最新バージョンで試していること)、それらをテキストファイルに変換して読んでいるときも、正しく表示されます。テキスト ファイルから整数を入力しているときに、PWM が出力に間違った値を使用した場合のように、クラクションのような音が聞こえます。

問題は、Atmega が使用するバイト データへのデータのキャストのどこかにあると推測しています。しかし、どこを見ればいいのか、どうすれば解決できるのか、まったくわかりません。uint_t8 を使用している元のファイルが unsigned char を使用していることに気付きました。それらをキャストしようとしましたが、うまくいきません。

誰もこれについて経験がありますか?または、これを解決する方法の手がかりはありますか?

あなたの助けと時間をありがとう!

ジェローン

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;
4

0 に答える 0