#author("2020-04-17T12:36:58+09:00","default:kuran","kuran")
[[戻る>PyBadge]]
#author("2020-04-22T01:53:02+09:00","default:kuran","kuran")
[[戻る>pyBadge]]

*サウンド再生 [#r7b6ae73]
Adafruit_ArcadaクラスにtimerCallback関数があるのでそれを使って1秒間に11025回の割り込み処理を起こす。~
割り込み処理でaudioデータ内の1バイトをanalogWriteでARCADA_RIGHT_AUDIO_PINに送っている。~
ARCADA_LEFT_AUDIO_PINは定義はされているが何も再生されない。~
audioはそのまま送ると音割れしたので値を半分にしました。~

*サンプルプログラム [#cee502b9]
-SoundSample1.ino
 #include <Adafruit_Arcada.h>
 #include "audio.h"
 
 Adafruit_Arcada arcada;
 size_t sampleOffsetIndex;
 
 void timerCallback()
 {
 	analogWrite(ARCADA_RIGHT_AUDIO_PIN, (uint16_t)audio[sampleOffsetIndex] / 2);
 	analogWrite(ARCADA_LEFT_AUDIO_PIN, (uint16_t)audio[sampleOffsetIndex] / 2);
 	++ sampleOffsetIndex;
 	if(sampleOffsetIndex >= sizeof(audio))
 	{
 		sampleOffsetIndex = 0;
 	}
 }
 
 void setup()
 {
 	Serial.begin(9600);
 	if(arcada.arcadaBegin() == false)
 	{
 		Serial.print("Failed to begin");
 		while(1);
 	}
 	analogWriteResolution(8);
 	arcada.enableSpeaker(true);
 	sampleOffsetIndex = 0;
 	arcada.timerCallback(SAMPLE_RATE, timerCallback);
 }
 
 void loop()
 {
 }
~
-audio.h
 #define SAMPLE_RATE 11050
 
 const unsigned char audio[] =
 {
 	143, 206, 192, 169, 175, 171, 166, 128, 61, 36, 40, 43, 96, 112, 115, 139,
 	77, 31, 45, 33, 62, 140, 150, 124, 154, 148, 139, 142, 137, 180, 204, 197,
 	178, 137, 106, 102, 97, 107, 138, 145, 165, 159, 113, 126, 137, 148, 159, 139,
 	:
 	:
 	:
	続く

*実行結果 [#sa011f21]
画面には何も表示されず音声のみが再生されます。~

*サンプルプログラムのダウンロード [#j355e2b3]
#ref(SoundSample1.zip)~

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS