今回は、Arduino UNO のマイコンから I2C で AquesTalk pico へデータを流してみたいと思います。ブレッドボードに ATP3011F1 を付けまして、Arduino UNOと電源、SCL,SDA,Reset を接続して、ATP3011F1 を I2C モードで動くように SMOD0 を落します。
テスト用音声の記号はアクエスト社の 音声記号列生成 Webサービス を利用してます。
以下のスケッチで動作確認して音声出力出来ました。
#include
#define I2CPICO 0x2E
void setup() {
Wire.begin();
}
void loop() {
delay(1000);
AquesTalkPico_Send(“kokoni yomiage’ru/te’_kisutoo nyu-ryo_kushima’_su. \r”);
AquesTalkPico_Send(“kono/o’nnseiwa akue’/su’tono/onnseikigo-re_tsuse’isei wextubusa’-bisude/hennkannshima’_shita. \r”);
while(1) {
;
}
}
void AquesTalkPico_Ready() {
while(1) {
Wire.requestFrom(I2CPICO, 1); // request 1 byte
if(Wire.available() > 0) {
if(Wire.read() == ‘>’) break;
}
delay(50); // delay 50ms
}
}
void AquesTalkPico_Send(char *msg) {
unsigned char i;
char *smsg;
smsg = msg;
AquesTalkPico_Ready();
while(*smsg != 0) {
Wire.beginTransmission(I2CPICO);
for(i = 0; i < 32; i++) {
Wire.write(*smsg++);
if(*smsg == 0) {
break;
}
}
Wire.endTransmission();
}
}
[/code]