SP03 Text to Speech Synthesizer
Embed:
(wiki syntax)
Show/hide line numbers
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 }
Generated on Fri Jul 15 2022 05:14:17 by 1.7.2