SP03 Text to Speech Synthesizer

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers SP03.cpp Source File

SP03.cpp

00001 #include "SP03.h"
00002 
00003 SP03::SP03(PinName sda, PinName scl): i2c_bus(sda,scl)
00004 {
00005     i2c_bus.frequency(CLOCK_RATE);
00006     _volume = VOLUME_MAX;
00007     _speed = SPEED_NORMAL;
00008 }
00009 
00010 void SP03::speak(const char * message)
00011 {
00012     i2c_bus.start();
00013     i2c_bus.write(DEFAULT_ADDRESS);
00014     i2c_bus.write(REGISTER_FOR_COMMAND);
00015     i2c_bus.write(0x00);
00016     i2c_bus.write(_volume);
00017     i2c_bus.write(_speed);
00018     i2c_bus.write(DEFAULT_SPEECH_PITCH);
00019     int i = 0;
00020     while (true) {
00021         i2c_bus.write(message[i++]);
00022         if (message[i] == 0x00)
00023             break;
00024     }
00025     i2c_bus.write(0x00);
00026     i2c_bus.stop();
00027 
00028     i2c_bus.start();
00029     i2c_bus.write(DEFAULT_ADDRESS);
00030     i2c_bus.write(REGISTER_FOR_COMMAND);
00031     i2c_bus.write(SPEAK_OUT_THE_BUFFER);
00032     i2c_bus.stop();
00033 }
00034 
00035 void SP03::setSpeed(char speed)
00036 {
00037     _speed = speed;
00038 }
00039 
00040 void SP03::setVolume(char volume)
00041 {
00042     _volume = volume;
00043 }
00044 
00045 bool SP03::isSpeaking()
00046 {
00047     i2c_bus.start();
00048     i2c_bus.write(DEFAULT_ADDRESS);
00049     i2c_bus.write(REGISTER_FOR_COMMAND);
00050     i2c_bus.stop();
00051 
00052     i2c_bus.start();
00053     i2c_bus.write(DEFAULT_ADDRESS | 0x01);
00054     int value = i2c_bus.read(0x00);
00055     i2c_bus.stop();
00056 
00057     if (value == 0x00)
00058         return false;
00059     else return true;
00060 }