SP03 Text to Speech Synthesizer

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?

UserRevisionLine numberNew 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