SP03 Text to Speech Synthesizer
SP03.h@2:4090898287d5, 2016-03-07 (annotated)
- Committer:
- yangcq88517
- Date:
- Mon Mar 07 14:45:16 2016 +0000
- Revision:
- 2:4090898287d5
- Parent:
- 1:58ab657cd515
update document
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yangcq88517 | 0:2326b6172834 | 1 | #ifndef Smartlab_Drive_SP03 |
yangcq88517 | 0:2326b6172834 | 2 | #define Smartlab_Drive_SP03 |
yangcq88517 | 0:2326b6172834 | 3 | |
yangcq88517 | 0:2326b6172834 | 4 | #include "mbed.h" |
yangcq88517 | 2:4090898287d5 | 5 | /** |
yangcq88517 | 2:4090898287d5 | 6 | * Example: |
yangcq88517 | 2:4090898287d5 | 7 | * @code |
yangcq88517 | 2:4090898287d5 | 8 | * #include "mbed.h" |
yangcq88517 | 2:4090898287d5 | 9 | * #include "SP03.h" |
yangcq88517 | 2:4090898287d5 | 10 | * |
yangcq88517 | 2:4090898287d5 | 11 | * DigitalOut myled(LED1); |
yangcq88517 | 2:4090898287d5 | 12 | * SP03 sp03(p28, p27); |
yangcq88517 | 2:4090898287d5 | 13 | * |
yangcq88517 | 2:4090898287d5 | 14 | * int main() |
yangcq88517 | 2:4090898287d5 | 15 | * { |
yangcq88517 | 2:4090898287d5 | 16 | * sp03.setSpeed(SP03::SPEED_NORMAL); |
yangcq88517 | 2:4090898287d5 | 17 | * |
yangcq88517 | 2:4090898287d5 | 18 | * sp03.setVolume(SP03::VOLUME_MAX); |
yangcq88517 | 2:4090898287d5 | 19 | * |
yangcq88517 | 2:4090898287d5 | 20 | * while(1) { |
yangcq88517 | 2:4090898287d5 | 21 | * if (!sp03.isSpeaking()) { |
yangcq88517 | 2:4090898287d5 | 22 | * myled = 1; |
yangcq88517 | 2:4090898287d5 | 23 | * sp03.speak("Hello CQ 1 2 2 3 4 6 76 7 9 9 08 8"); |
yangcq88517 | 2:4090898287d5 | 24 | * } else |
yangcq88517 | 2:4090898287d5 | 25 | * myled = 0; |
yangcq88517 | 2:4090898287d5 | 26 | * } |
yangcq88517 | 2:4090898287d5 | 27 | * } |
yangcq88517 | 2:4090898287d5 | 28 | * @endcode |
yangcq88517 | 2:4090898287d5 | 29 | */ |
yangcq88517 | 0:2326b6172834 | 30 | class SP03 |
yangcq88517 | 0:2326b6172834 | 31 | { |
yangcq88517 | 0:2326b6172834 | 32 | private: |
yangcq88517 | 1:58ab657cd515 | 33 | static const char DEFAULT_ADDRESS = 0xC4; |
yangcq88517 | 0:2326b6172834 | 34 | static const int CLOCK_RATE = 100000; |
yangcq88517 | 1:58ab657cd515 | 35 | static const char REGISTER_FOR_COMMAND = 0x00; |
yangcq88517 | 1:58ab657cd515 | 36 | static const char REGISTER_FOR_SOFTWARE_REVISION_NUMBER = 0x01; |
yangcq88517 | 1:58ab657cd515 | 37 | static const char SPEAK_OUT_THE_BUFFER = 0x40; |
yangcq88517 | 1:58ab657cd515 | 38 | |
yangcq88517 | 1:58ab657cd515 | 39 | static const char DEFAULT_SPEECH_PITCH = 0x03; |
yangcq88517 | 1:58ab657cd515 | 40 | |
yangcq88517 | 1:58ab657cd515 | 41 | char _volume; |
yangcq88517 | 1:58ab657cd515 | 42 | |
yangcq88517 | 1:58ab657cd515 | 43 | char _speed; |
yangcq88517 | 0:2326b6172834 | 44 | |
yangcq88517 | 0:2326b6172834 | 45 | I2C i2c_bus; |
yangcq88517 | 0:2326b6172834 | 46 | public : |
yangcq88517 | 0:2326b6172834 | 47 | |
yangcq88517 | 1:58ab657cd515 | 48 | static const char SPEED_NORMAL = 0x05; |
yangcq88517 | 1:58ab657cd515 | 49 | static const char SPEED_FAST = 0x02; |
yangcq88517 | 1:58ab657cd515 | 50 | static const char SPEED_SLOW = 0x06; |
yangcq88517 | 1:58ab657cd515 | 51 | |
yangcq88517 | 1:58ab657cd515 | 52 | static const char VOLUME_MAX = 0x00; |
yangcq88517 | 1:58ab657cd515 | 53 | static const char VOLUME_MEDIUM = 0x03; |
yangcq88517 | 1:58ab657cd515 | 54 | static const char VOLUME_MIN = 0x06; |
yangcq88517 | 1:58ab657cd515 | 55 | |
yangcq88517 | 1:58ab657cd515 | 56 | /** Construct |
yangcq88517 | 1:58ab657cd515 | 57 | * |
yangcq88517 | 1:58ab657cd515 | 58 | * @param sda I2C sda signal |
yangcq88517 | 1:58ab657cd515 | 59 | * @param scl I2C scl signal |
yangcq88517 | 1:58ab657cd515 | 60 | */ |
yangcq88517 | 0:2326b6172834 | 61 | SP03(PinName sda, PinName scl); |
yangcq88517 | 0:2326b6172834 | 62 | |
yangcq88517 | 1:58ab657cd515 | 63 | /** Set the speed of the speech |
yangcq88517 | 1:58ab657cd515 | 64 | * |
yangcq88517 | 1:58ab657cd515 | 65 | * @param message NULL terminated char array |
yangcq88517 | 1:58ab657cd515 | 66 | */ |
yangcq88517 | 1:58ab657cd515 | 67 | void speak(const char * message); |
yangcq88517 | 1:58ab657cd515 | 68 | |
yangcq88517 | 1:58ab657cd515 | 69 | /** Set the speed of the speech |
yangcq88517 | 1:58ab657cd515 | 70 | * |
yangcq88517 | 1:58ab657cd515 | 71 | * @param speed [SPEED_NORMAL = 0x05, SPEED_FAST = 0x02, SPEED_SLOW = 0x06] |
yangcq88517 | 1:58ab657cd515 | 72 | */ |
yangcq88517 | 1:58ab657cd515 | 73 | void setSpeed(char speed); |
yangcq88517 | 0:2326b6172834 | 74 | |
yangcq88517 | 1:58ab657cd515 | 75 | /** Set the volume of the speech |
yangcq88517 | 1:58ab657cd515 | 76 | * |
yangcq88517 | 1:58ab657cd515 | 77 | * @param volume [VOLUME_MAX = 0x00, VOLUME_MEDIUM = 0x03, VOLUME_MIN = 0x06] |
yangcq88517 | 1:58ab657cd515 | 78 | */ |
yangcq88517 | 1:58ab657cd515 | 79 | void setVolume(char volume); |
yangcq88517 | 1:58ab657cd515 | 80 | |
yangcq88517 | 1:58ab657cd515 | 81 | /** Check if the SP03 is currently talking |
yangcq88517 | 1:58ab657cd515 | 82 | * |
yangcq88517 | 1:58ab657cd515 | 83 | * @returns |
yangcq88517 | 1:58ab657cd515 | 84 | * ture device is talking and no command can be send, |
yangcq88517 | 1:58ab657cd515 | 85 | * false command can be issued |
yangcq88517 | 1:58ab657cd515 | 86 | */ |
yangcq88517 | 1:58ab657cd515 | 87 | bool isSpeaking(); |
yangcq88517 | 0:2326b6172834 | 88 | }; |
yangcq88517 | 0:2326b6172834 | 89 | |
yangcq88517 | 0:2326b6172834 | 90 | #endif |