2012/4/9
Arduinoを使って合成音声を出してみました。このLSIはUART、I2C、SPI通信で音声を出せますが、大幅な温度変化や電圧変動があるとエラーが発生しやすいと説明書にあるので、I2C通信が良いようです。
——————————————————————————————————————————————————————————
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度です)
// 音声合成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度です)
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);
}