AquesTalk pico LSI I2C interface

音声合成LSI AquesTalk pico ATP3011のI2Cインターフェースです。

main.cpp

#include "mbed.h"
#include "ATP3011.h"
ATP3011 talk(P0_0, P0_1); // sda,scl LPC810
RawSerial pc(P0_4, P0_6); // tx,rx

int main()
{
    if (talk.IsActive()) {
        pc.puts("ATP3011 OK\r\n");
    } else {
        pc.puts("ATP3011 NG\r\n");
        while(1); // forever
    }
    const char* msg = "konnitiwa.";
    pc.puts(msg);pc.puts("\r\n");
    talk.Synthe(msg);
    char buf[32];
    for(int n = 1; ; n++) {
        snprintf(buf, sizeof(buf), "<NUMK VAL=%d>.", n);
        pc.puts(buf);pc.puts("\r\n");
        talk.Synthe(buf);
    }
}


参考:
[Arduino] AquesTalk pico LSI を I2C で制御する | N.Yamazaki's blog
音声記号列生成 Webサービス - AquesTalk - 株式会社アクエスト

ATP3011.h

Committer:
va009039
Date:
2014-01-07
Revision:
0:afbfc810f82e

File content as of revision 0:afbfc810f82e:

#include "mbed.h"
#pragma once

#define AQTK_I2C_ADDR (0x2E<<1)
#define AQTK_STARTUP_WAIT_MS 80
#define AQTK_POLL_WAIT_MS 10

/** ATP3011 class
 *
 * AquesTalk pico LSI I2C interface
 * Example:
 * @code
 *      #include "ATP3011.h"
 *      ATP3011 talk(P0_10,P0_11); // I2C sda scl
 *      
 *      int main() {
 *          talk.Synthe("konnichiwa.");
 *          for(int n = 1; ; n++) {
 *              char buf[32];
 *              snprintf(buf, sizeof(buf), "<NUMK VAL=%d>.", n);
 *              talk.Synthe(buf);
 *          }
 *      } 
 * @endcode
 *
 */
class ATP3011 {
public:
    /** Create a AquesTalk pico LSI I2C interface
     *
     * @param sda  I2C data pin
     * @param scl  I2C clock pin
     * @param addr I2C address
     */
    ATP3011(PinName sda, PinName scl, int addr = AQTK_I2C_ADDR);
    bool IsActive(int timeout_ms = 500);
    void Synthe(const char* msg);
    void Write(const char* msg);
    bool IsBusy();
private:
    int _addr;
    I2C _i2c; 
    Timer _poll_wait;
};