SP03 Text to Speech Synthesizer
SP03.cpp@0:2326b6172834, 2014-05-07 (annotated)
- Committer:
- yangcq88517
- Date:
- Wed May 07 13:52:08 2014 +0000
- Revision:
- 0:2326b6172834
- Child:
- 1:58ab657cd515
SP03 I2C
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yangcq88517 | 0:2326b6172834 | 1 | #include "SP03.h" |
yangcq88517 | 0:2326b6172834 | 2 | |
yangcq88517 | 0:2326b6172834 | 3 | SP03::SP03(PinName sda, PinName scl): i2c_bus(sda,scl) |
yangcq88517 | 0:2326b6172834 | 4 | { |
yangcq88517 | 0:2326b6172834 | 5 | i2c_bus.frequency(CLOCK_RATE); |
yangcq88517 | 0:2326b6172834 | 6 | } |
yangcq88517 | 0:2326b6172834 | 7 | |
yangcq88517 | 0:2326b6172834 | 8 | void SP03::_speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume,uint8_t pitch) |
yangcq88517 | 0:2326b6172834 | 9 | { |
yangcq88517 | 0:2326b6172834 | 10 | char speakout[2]; |
yangcq88517 | 0:2326b6172834 | 11 | speakout[0] = REGISTER_FOR_COMMAND; |
yangcq88517 | 0:2326b6172834 | 12 | speakout[1] = SPEAK_OUT_THE_BUFFER; |
yangcq88517 | 0:2326b6172834 | 13 | int length = 6 + strlen(message); |
yangcq88517 | 0:2326b6172834 | 14 | char _message[length]; |
yangcq88517 | 0:2326b6172834 | 15 | _message[0] = REGISTER_FOR_COMMAND; |
yangcq88517 | 0:2326b6172834 | 16 | _message[1] = 0x00; |
yangcq88517 | 0:2326b6172834 | 17 | _message[2] = volume; |
yangcq88517 | 0:2326b6172834 | 18 | _message[3] = speed; |
yangcq88517 | 0:2326b6172834 | 19 | _message[4] = pitch; |
yangcq88517 | 0:2326b6172834 | 20 | for (int i = 5; i < length; i++) |
yangcq88517 | 0:2326b6172834 | 21 | _message[i] = message[i - 5]; |
yangcq88517 | 0:2326b6172834 | 22 | i2c_bus.write(DEFAULT_ADDRESS, _message, length); |
yangcq88517 | 0:2326b6172834 | 23 | i2c_bus.write(DEFAULT_ADDRESS, speakout, 2); |
yangcq88517 | 0:2326b6172834 | 24 | } |
yangcq88517 | 0:2326b6172834 | 25 | |
yangcq88517 | 0:2326b6172834 | 26 | void SP03::Speak(const char message[]) |
yangcq88517 | 0:2326b6172834 | 27 | { |
yangcq88517 | 0:2326b6172834 | 28 | _speak(message, SmartLab_SP03::NORMAL, SmartLab_SP03::MAX, DEFAULT_SPEECH_PITCH); |
yangcq88517 | 0:2326b6172834 | 29 | } |
yangcq88517 | 0:2326b6172834 | 30 | |
yangcq88517 | 0:2326b6172834 | 31 | void SP03::Speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume) |
yangcq88517 | 0:2326b6172834 | 32 | { |
yangcq88517 | 0:2326b6172834 | 33 | _speak(message, speed, volume, DEFAULT_SPEECH_PITCH); |
yangcq88517 | 0:2326b6172834 | 34 | } |
yangcq88517 | 0:2326b6172834 | 35 | |
yangcq88517 | 0:2326b6172834 | 36 | void SP03::Speak(const char message[],SmartLab_SP03::Speech_Speed speed, SmartLab_SP03::Speech_Volume volume,uint8_t pitch) |
yangcq88517 | 0:2326b6172834 | 37 | { |
yangcq88517 | 0:2326b6172834 | 38 | _speak(message, speed, volume, pitch); |
yangcq88517 | 0:2326b6172834 | 39 | } |
yangcq88517 | 0:2326b6172834 | 40 | |
yangcq88517 | 0:2326b6172834 | 41 | bool SP03::IsSpeaking() |
yangcq88517 | 0:2326b6172834 | 42 | { |
yangcq88517 | 0:2326b6172834 | 43 | char m[1]= {REGISTER_FOR_COMMAND}; |
yangcq88517 | 0:2326b6172834 | 44 | i2c_bus.write(DEFAULT_ADDRESS,m ,1); |
yangcq88517 | 0:2326b6172834 | 45 | i2c_bus.read(DEFAULT_ADDRESS, m, 1); |
yangcq88517 | 0:2326b6172834 | 46 | if (m[0] == 0x00) |
yangcq88517 | 0:2326b6172834 | 47 | return false; |
yangcq88517 | 0:2326b6172834 | 48 | else return true; |
yangcq88517 | 0:2326b6172834 | 49 | } |