![](/media/cache/profiles/BYNBmpmCQAAYTvZ.jpg.50x50_q85.jpg)
You can use two mode time setting. (1) receive real time from NTP server (2) manual setting.Before startup, it should be download some voice file into micro SD-card.
Dependencies: FatFileSystem mbed HTTPClient_ToBeRemoved TextLCD HTTPServer NTPClient_NetServices EthernetNetIf
main.cpp
00001 #include "mbed.h" 00002 //#define USE_TextLCD_20x4 00003 #define USE_FIXED_IP 00004 00005 //////////////////////////////////////// 00006 //////// For Waveplayer //////// 00007 //////////////////////////////////////// 00008 //Place suitable uncompressed wav files with 8 or 16 bit sample sizes on the SD card and ensure the 00009 //file names are 8.3 format. Then change the main method below to the relevant file paths. 00010 #include "wavplayer.h" 00011 00012 00013 //////////////////////////////////////// 00014 //////// general setting //////// 00015 //////////////////////////////////////// 00016 //#define USE_TextLCD_20x4 00017 #define USE_FIXED_IP 00018 00019 //////////////////////////////////////// 00020 //////// For TextLCD //////// 00021 //////////////////////////////////////// 00022 #include "TextLCD.h" 00023 #ifdef USE_TextLCD_20x4 00024 //TextLCD lcd( p24, p26, p27, p28, p29, p30, TextLCD::LCD20x4 ); // rs, e, d0-d3 00025 #else 00026 TextLCD lcd( p24, p26, p27, p28, p29, p30 ); // rs, e, d0-d3 00027 #endif 00028 00029 //////////////////////////////////////// 00030 //////// For SD_card //////// 00031 //////////////////////////////////////// 00032 #include "SDHCFileSystem.h" 00033 //SDFileSystem sd(p5, p6, p7, p13, "sd"); // mosi, miso, sclk, cs, name 00034 SDFileSystem sd(p5, p6, p7, p8, "sd"); // mosi, miso, sclk, cs, name (HW modification candidate) 00035 00036 //////////////////////////////////////// 00037 //////// For USB storage //////// 00038 //////////////////////////////////////// 00039 //#include "MSCFileSystem.h" 00040 //MSCFileSystem usb("usb"); 00041 00042 //////////////////////////////////////// 00043 //////// For Ethernet test //////// 00044 //////////////////////////////////////// 00045 #include "EthernetNetIf.h" 00046 //#include "HTTPServer.h" 00047 //#ifdef USE_FIXED_IP 00048 //EthernetNetIf eth( 00049 // IpAddr(192,168,0,20), //IP Address 00050 // IpAddr(255,255,255,0), //Network Mask 00051 // IpAddr(192,168,0,1), //Gateway 00052 // IpAddr(192,168,0,1) //DNS 00053 //); 00054 //#else 00055 EthernetNetIf eth; 00056 //#endif 00057 //HTTPServer svr; 00058 //#include "HTTPClient.h" 00059 #include "NTPClient.h" 00060 NTPClient ntp; 00061 const char ntp_server[] = "0.uk.pool.ntp.org"; 00062 00063 LocalFileSystem web("local"); 00064 00065 00066 00067 00068 void test_file_write( char *title, char *path ); 00069 //void test_httpserver( void ); 00070 int position( void ); 00071 00072 DigitalOut led1(LED1); 00073 DigitalOut led4(LED4); 00074 00075 DigitalIn SW1(p25); 00076 DigitalIn SW2(p26); 00077 int TGSW=1; 00078 DigitalIn SW3(p14); 00079 DigitalOut AMPEnable(p12); //0:Off, 1:On 00080 Serial pc(USBTX, USBRX); // tx, rx 00081 00082 int playflg; 00083 int playflg2; 00084 int timest; 00085 00086 char *wavefilename1; 00087 char *wavefilename2; 00088 char *wavefilename3; 00089 char *wavefilename4; 00090 00091 Ticker rt; 00092 char buf[40]; 00093 time_t ctTime; 00094 00095 void timecall() 00096 { 00097 if(TGSW==1)ctTime = time(NULL)+32400;//JST time 00098 else ctTime = time(NULL); 00099 strftime(buf,sizeof(buf), " (%Y/%m/%d %a %p %I:%M:%S)", localtime(&ctTime)); 00100 lcd.cls(); 00101 lcd.printf("%s",buf); 00102 } 00103 00104 00105 int main() { 00106 WavPlayer myWavPlayer; 00107 SW1.mode(PullUp); 00108 SW2.mode(PullUp); 00109 led1 = 1 ; 00110 playflg = 0; 00111 playflg2 = 0; 00112 pc.printf("\r\n--------------- Starting -----------------\r\n"); 00113 lcd.printf("----Starting----"); 00114 lcd.locate(0,1); 00115 wait(3); 00116 test_file_write( "SD card", "/sd/star_bd.txt" ); 00117 wait(2); 00118 //test_file_write( "USB storage", "/usb/star_bd.txt" ); 00119 //wait( 2 ); 00120 AMPEnable=0; 00121 myWavPlayer.play_wave("/sd/startup.wav"); 00122 wait(0.5); 00123 myWavPlayer.play_wave("/sd/startup2.wav"); 00124 lcd.cls(); 00125 AMPEnable=0; 00126 pc.printf("\r\nSetting up...\r\n"); 00127 00128 lcd.printf("Setting up...\n"); 00129 if(TGSW==1) 00130 { 00131 EthernetErr ethErr = eth.setup(); 00132 if (ethErr) { 00133 pc.printf("Error %d in setup.\n", ethErr); 00134 lcd.printf("Error %d in setup.\n", ethErr); 00135 return -1; 00136 } 00137 } 00138 lcd.locate(0,1); 00139 pc.printf("\r\nSetup OK\r\n"); 00140 wait(1); 00141 //test_httpserver(); 00142 00143 //RTC setup 00144 Host server(IpAddr(), 123, ntp_server); 00145 ntp.setTime(server); 00146 timest=1; 00147 00148 lcd.cls(); 00149 lcd.printf("Time Set End"); 00150 wait(1); 00151 00152 // rt.attach_us(&timecall,300.0); 00153 00154 while(1) 00155 { 00156 lcd.cls(); 00157 ctTime = time(NULL)+32400;//JST time 00158 strftime(buf,sizeof(buf), " (%Y/%m/%d %a %p %I:%M:%S)", localtime(&ctTime)); 00159 lcd.printf("%s",buf); 00160 00161 //wait(0.5); 00162 00163 if(SW1==0) 00164 { 00165 if(buf[20]=='1') 00166 { 00167 if(buf[21]=='0') wavefilename1 = "/sd/10ji.wav"; 00168 else if(buf[21]=='1') wavefilename1 = "/sd/11ji.wav"; 00169 else if(buf[21]=='2') wavefilename1 = "/sd/12ji.wav"; 00170 else wavefilename1 = "/sd/jikanga.wav"; 00171 } 00172 else 00173 { 00174 if(buf[20]=='0') 00175 { 00176 if(buf[21]=='1') wavefilename1 = "/sd/1ji.wav"; 00177 if(buf[21]=='2') wavefilename1 = "/sd/2ji.wav"; 00178 if(buf[21]=='3') wavefilename1 = "/sd/3ji.wav"; 00179 if(buf[21]=='4') wavefilename1 = "/sd/4ji.wav"; 00180 if(buf[21]=='5') wavefilename1 = "/sd/5ji.wav"; 00181 if(buf[21]=='6') wavefilename1 = "/sd/6ji.wav"; 00182 if(buf[21]=='7') wavefilename1 = "/sd/7ji.wav"; 00183 if(buf[21]=='8') wavefilename1 = "/sd/8ji.wav"; 00184 if(buf[21]=='9') wavefilename1 = "/sd/9ji.wav"; 00185 } 00186 else 00187 { 00188 wavefilename1 = "/sd/jikanga.wav"; 00189 } 00190 } 00191 00192 if(buf[23]=='0') 00193 { 00194 wavefilename3 = "/sd/desu.wav"; 00195 if(buf[24]=='0') wavefilename2 = "/sd/just.wav"; 00196 else if(buf[24]=='1') wavefilename2 = "/sd/1min.wav"; 00197 else if(buf[24]=='2') wavefilename2 = "/sd/2min.wav"; 00198 else if(buf[24]=='3') wavefilename2 = "/sd/3min.wav"; 00199 else if(buf[24]=='4') wavefilename2 = "/sd/4min.wav"; 00200 else if(buf[24]=='5') wavefilename2 = "/sd/5min.wav"; 00201 else if(buf[24]=='6') wavefilename2 = "/sd/6min.wav"; 00202 else if(buf[24]=='7') wavefilename2 = "/sd/7min.wav"; 00203 else if(buf[24]=='8') wavefilename2 = "/sd/8min.wav"; 00204 else if(buf[24]=='9') wavefilename2 = "/sd/9min.wav"; 00205 else wavefilename2 = "/sd/oksi.wav"; 00206 } 00207 else if(buf[23]=='1') 00208 { 00209 if(buf[24]=='0'){ 00210 wavefilename2 = "/sd/10min.wav"; 00211 wavefilename3 = "/sd/desu.wav"; 00212 } 00213 else{ 00214 wavefilename2 = "/sd/10.wav"; 00215 playflg2=1; 00216 wavefilename4 = "/sd/desu.wav"; 00217 } 00218 } 00219 else if(buf[23]=='2') 00220 { 00221 if(buf[24]=='0'){ 00222 wavefilename2 = "/sd/20min.wav"; 00223 wavefilename3 = "/sd/desu.wav"; 00224 } 00225 else{ 00226 wavefilename2 = "/sd/20.wav"; 00227 playflg2=1; 00228 wavefilename4 = "/sd/desu.wav"; 00229 } 00230 } 00231 else if(buf[23]=='3') 00232 { 00233 if(buf[24]=='0'){ 00234 wavefilename2 = "/sd/30min.wav"; 00235 wavefilename3 = "/sd/desu.wav"; 00236 } 00237 else{ 00238 wavefilename2 = "/sd/30.wav"; 00239 playflg2=1; 00240 wavefilename4 = "/sd/desu.wav"; 00241 } 00242 } 00243 else if(buf[23]=='4') 00244 { 00245 if(buf[24]=='0'){ 00246 wavefilename2 = "/sd/40min.wav"; 00247 wavefilename3 = "/sd/desu.wav"; 00248 } 00249 else{ 00250 wavefilename2 = "/sd/40.wav"; 00251 playflg2=1; 00252 wavefilename4 = "/sd/desu.wav"; 00253 } 00254 } 00255 else if(buf[23]=='5') 00256 { 00257 if(buf[24]=='0'){ 00258 wavefilename2 = "/sd/50min.wav"; 00259 wavefilename3 = "/sd/desu.wav"; 00260 } 00261 else{ 00262 wavefilename2 = "/sd/50.wav"; 00263 playflg2=1; 00264 wavefilename4 = "/sd/desu.wav"; 00265 } 00266 } 00267 else 00268 { 00269 wavefilename2 = "/sd/okasi.wav"; 00270 wavefilename3 = "/sd/desu.wav"; 00271 } 00272 00273 if(playflg2==1) 00274 { 00275 if(buf[24]=='1') wavefilename3 = "/sd/1min.wav"; 00276 else if(buf[24]=='2') wavefilename3 = "/sd/2min.wav"; 00277 else if(buf[24]=='3') wavefilename3 = "/sd/3min.wav"; 00278 else if(buf[24]=='4') wavefilename3 = "/sd/4min.wav"; 00279 else if(buf[24]=='5') wavefilename3 = "/sd/5min.wav"; 00280 else if(buf[24]=='6') wavefilename3 = "/sd/6min.wav"; 00281 else if(buf[24]=='7') wavefilename3 = "/sd/7min.wav"; 00282 else if(buf[24]=='8') wavefilename3 = "/sd/8min.wav"; 00283 else if(buf[24]=='9') wavefilename3 = "/sd/9min.wav"; 00284 } 00285 00286 playflg=1; 00287 } 00288 00289 00290 if(playflg==1) 00291 { 00292 lcd.cls(); 00293 lcd.printf("%s", buf); 00294 AMPEnable=0; 00295 myWavPlayer.play_wave(wavefilename1); // 8 bit sample size 00296 myWavPlayer.play_wave(wavefilename2); 00297 myWavPlayer.play_wave(wavefilename3); 00298 if(playflg2==1) 00299 { 00300 myWavPlayer.play_wave(wavefilename4); 00301 } 00302 AMPEnable=1; 00303 led1 = 0; 00304 led4 = 1; 00305 } 00306 if(SW2==0) 00307 { 00308 AMPEnable=0; 00309 myWavPlayer.play_wave("/sd/doubler.wav"); 00310 AMPEnable=0; 00311 } 00312 00313 wait(0.2); 00314 led4 = 0; 00315 led1 = 1; 00316 playflg =0; 00317 playflg2=0; 00318 00319 } 00320 00321 } 00322 00323 00324 void test_file_write( char *title, char *path ) { 00325 // SD card test 00326 lcd.locate( 0, position() ); 00327 lcd.printf( "%s: ", title ); 00328 00329 FILE *fp = fopen( path, "w" ); 00330 if ( fp == NULL ) { 00331 lcd.printf( "error" ); 00332 error( "Could not open file for write\n" ); 00333 } 00334 fprintf( fp, "The mbed writing a file through the star board orange (%s)!", title ); 00335 fclose( fp ); 00336 00337 lcd.printf( "OK." ); 00338 } 00339 00340 00341 int position( void ) { 00342 static int p = 0; 00343 00344 #ifdef USE_TextLCD_20x4 00345 return( ++p % 4 ); 00346 #else 00347 return( ++p % 2 ); 00348 #endif 00349 } 00350
Generated on Wed Jul 13 2022 18:37:42 by
![doxygen](doxygen.png)