音声合成LSI(APT3011F-4)

2012/4/9

      Arduinoを使って合成音声を出してみました。このLSIはUART、I2C、SPI通信で音声を出せますが、大幅な温度変化や電圧変動があるとエラーが発生しやすいと説明書にあるので、I2C通信が良いようです。

   ATP3011F4-PUのデーター資料                       

00334.jpg

——————————————————————————————————————————————————————————

SPI通信

      

     

// SPI通信(MODE0) ATP3011F4-PU
 // ATP3011F4側 SS--16pin MOSI--17pin MISO--18pin SCK--19pin
 // arduino側    SS--10pin MOSI--11pin MISO--12pin SCK--13pin



 #include <SPI.h>

 int sspin = 10;

 void setup(){
    pinMode(sspin,OUTPUT);
    SPI.begin();
    SPI.setBitOrder(MSBFIRST); // ATP3011F4 は MSBファースト
    SPI.setClockDivider(SPI_CLOCK_DIV128); // 250KHz(1MHz以下に設定すること)
    SPI.setDataMode(SPI_MODE0); // ATP3011F4の設定と同じにする
    digitalWrite(sspin,HIGH);
 } 
 void loop(){
    digitalWrite(sspin,LOW); // 通信を有効にする
  // "温度は" を 発声させる
      SPI.transfer(0x6f); 
      SPI.transfer(0x27); 
      SPI.transfer(0x6e); 
      SPI.transfer(0x64); 
      SPI.transfer(0x6f); 
      SPI.transfer(0x77); 
      SPI.transfer(0x61); 
      SPI.transfer(0x0d); 
     digitalWrite(sspin,HIGH); //通信終了
     delay(3000);
 }

——————————————————————————————————————————————————————————

I2C通信 (温度は15度です)

Arduino ATP3011F4 I2C3.gif


// 音声合成LSI ATP3011F4-PU 
 // I2C通信 SLC = A5 SDA = A4

 #include <Wire.h> 

 void setup(){
    Wire.begin(); 
 } 

 void loop() { 
     Wire.beginTransmission(0x2E);
        Wire.write("o'ndowa ");
        Wire.write("<NUMK VAL=15>dode_su \r"); // \rがリターンキーです。 
     Wire.endTransmission();
     delay(3000);
 }

———————————————————————————————————————————————————————————

UART通信 (温度は15度です)

Arduino ATP3011F43.gif


void setup(){
    Serial.begin(9600);
 }

 void loop(){
    Serial.println("?");
    delay(1000);
    Serial.print("o'ndowa ");  / 温度は
    Serial.println("<NUMK VAL=15>dode_su.");  / 15度です
    delay(3000);
 }