Arduinoスレーブその3:音声合成LSI

バージョン情報
Arduino IDE 1.0.6 ,windows 8.1

ArduinoのI2Cスレーブ第三弾。音声合成LSIを使ってみた。
音声合成LSI:ATP3011をArduinoとI2C接続しスレーブとして動くようにしてみた。マスター側のArduinoはPCと接続し、シリアル通信で受信した文字列をそのままI2C側に転送するようにしてみた。こうすることでPCから直接、音声合成LSIにしゃべらせることができる。

材料

Arduino
音声合成LSI:ATP3011
圧電スピーカ:SPT15

回路

回路

ソースコード

マスター側


#include <Wire.h>
 
char charA_out[80];
byte len_out = 0;
 
void setup() {
  Serial.begin(38400);
  Wire.begin();
}

void loop() {
    
  //シリアルを受信
  len_out = myReadLine(charA_out);
  if(len_out > 0){
    myTalk_send(len_out);
  }
  
}

//音声合成IC:送信
void myTalk_send(byte len_out){
  char *p_out;
  char arr_out[len_out + 1];
  
  for(int i = 0; i <= len_out; i++){
    arr_out[i] = charA_out[i];
  }
  arr_out[len_out] = '\r';
  p_out = arr_out;

  Wire.beginTransmission(0x2E);
  Serial.write(p_out);
  Wire.write(p_out);
  Wire.endTransmission();    
}


//シリアル受信

byte myReadLine(char charA[]){
  byte cnt_buf = 0;
  
  //受信したら
  if(Serial.available() > 0){
    delay(100);
    cnt_buf = min(79,Serial.available());  //受信文字数 最大79文字
    for (int iii = 0; iii < cnt_buf; iii++){
      charA[iii] = Serial.read();
    }
    charA[cnt_buf] = '\0';  //終端文字
  }
  return cnt_buf;
}

動作確認

Arduino IDE のシリアルモニタで 『konnichiwa』と送信すると、、、しゃべった!!
(音が小さいのでアンプ回路があった方がよさそう。)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です