Adafruit_ArcadaクラスにtimerCallback関数があるのでそれを使って1秒間に11025回の割り込み処理を起こす。
割り込み処理でaudioデータ内の1バイトをanalogWriteでARCADA_RIGHT_AUDIO_PINに送っている。
ARCADA_LEFT_AUDIO_PINは定義はされているが何も再生されない。
audioはそのまま送ると音割れしたので値を半分にしました。
#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()
{
}
#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,
	:
	:
	:
	続く画面には何も表示されず音声のみが再生されます。