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

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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