rev1

Dependencies:   4DGL-uLCD-SE EthernetInterface NTPClient SDFileSystem mbed-rtos mbed wave_player PinDetect

Fork of WavePlayer_HelloWorld by jim hamblen

Committer:
ashea6
Date:
Fri Apr 22 17:05:16 2016 +0000
Revision:
2:4d370e3f4618
Parent:
1:5b8e223e983d
Child:
3:5f0b28699a67
rev1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ashea6 2:4d370e3f4618 1 //WavePlayer_HelloWorld4180
ashea6 2:4d370e3f4618 2 //internet_clock
4180_1 1:5b8e223e983d 3
4180_1 1:5b8e223e983d 4 #include "mbed.h"
4180_1 1:5b8e223e983d 5 #include "SDFileSystem.h"
4180_1 1:5b8e223e983d 6 #include "wave_player.h"
ashea6 2:4d370e3f4618 7 #include "EthernetInterface.h"
ashea6 2:4d370e3f4618 8 #include "NTPClient.h"
ashea6 2:4d370e3f4618 9 #include "uLCD_4DGL.h"
ashea6 2:4d370e3f4618 10 #include "rtos.h"
4180_1 1:5b8e223e983d 11
4180_1 1:5b8e223e983d 12
ashea6 2:4d370e3f4618 13
ashea6 2:4d370e3f4618 14 SDFileSystem sd(p11, p12, p13, p14, "sd"); //SD card
4180_1 1:5b8e223e983d 15
4180_1 1:5b8e223e983d 16 AnalogOut DACout(p18);
4180_1 1:5b8e223e983d 17
4180_1 1:5b8e223e983d 18 wave_player waver(&DACout);
4180_1 1:5b8e223e983d 19
ashea6 2:4d370e3f4618 20 // Parameters
ashea6 2:4d370e3f4618 21 char* domain_name = "0.uk.pool.ntp.org";
ashea6 2:4d370e3f4618 22 int port_number = 123;
ashea6 2:4d370e3f4618 23
ashea6 2:4d370e3f4618 24 // Networking
ashea6 2:4d370e3f4618 25 EthernetInterface eth;
ashea6 2:4d370e3f4618 26 NTPClient ntp_client;
ashea6 2:4d370e3f4618 27
ashea6 2:4d370e3f4618 28 // Graphic LCD - TX, RX, and RES pins
ashea6 2:4d370e3f4618 29 uLCD_4DGL uLCD(p28,p27,p29);
ashea6 2:4d370e3f4618 30
ashea6 2:4d370e3f4618 31 //global variables
ashea6 2:4d370e3f4618 32 time_t ct_time;
ashea6 2:4d370e3f4618 33
ashea6 2:4d370e3f4618 34 void time_thread(void const *args)
ashea6 2:4d370e3f4618 35 {
ashea6 2:4d370e3f4618 36
ashea6 2:4d370e3f4618 37 char time_buffer[80];
ashea6 2:4d370e3f4618 38 // Loop and update clock
ashea6 2:4d370e3f4618 39 while (1) {
ashea6 2:4d370e3f4618 40 uLCD.locate(0, 1);
ashea6 2:4d370e3f4618 41 ct_time = time(NULL);
ashea6 2:4d370e3f4618 42 strftime(time_buffer, 80, " %a %b %d\n %T %p %z\n %Z\n", \
ashea6 2:4d370e3f4618 43 localtime(&ct_time));
ashea6 2:4d370e3f4618 44 uLCD.printf(" UTC/GMT:\n%s", time_buffer);
ashea6 2:4d370e3f4618 45 Thread::wait(100);
ashea6 2:4d370e3f4618 46 }
ashea6 2:4d370e3f4618 47 }
ashea6 2:4d370e3f4618 48
4180_1 1:5b8e223e983d 49 int main()
4180_1 1:5b8e223e983d 50 {
ashea6 2:4d370e3f4618 51
ashea6 2:4d370e3f4618 52
ashea6 2:4d370e3f4618 53
ashea6 2:4d370e3f4618 54
ashea6 2:4d370e3f4618 55 // Initialize LCD
ashea6 2:4d370e3f4618 56 uLCD.baudrate(115200);
ashea6 2:4d370e3f4618 57 uLCD.background_color(BLACK);
ashea6 2:4d370e3f4618 58 uLCD.cls();
ashea6 2:4d370e3f4618 59
ashea6 2:4d370e3f4618 60 // Connect to network and wait for DHCP
ashea6 2:4d370e3f4618 61 uLCD.locate(0,0);
ashea6 2:4d370e3f4618 62 uLCD.printf("Getting IP Address\n");
ashea6 2:4d370e3f4618 63 eth.init();
ashea6 2:4d370e3f4618 64 if ( eth.connect(60000) == -1 ) {
ashea6 2:4d370e3f4618 65 uLCD.printf("ERROR: Could not\nget IP address");
ashea6 2:4d370e3f4618 66 return -1;
ashea6 2:4d370e3f4618 67 }
ashea6 2:4d370e3f4618 68 uLCD.printf("IP address is \n%s\n\n",eth.getIPAddress());
ashea6 2:4d370e3f4618 69 Thread::wait(1000);
ashea6 2:4d370e3f4618 70
ashea6 2:4d370e3f4618 71 // Read time from server
ashea6 2:4d370e3f4618 72 uLCD.printf("Reading time...\n\r");
ashea6 2:4d370e3f4618 73 ntp_client.setTime(domain_name, port_number);
ashea6 2:4d370e3f4618 74 uLCD.printf("Time set\n");
ashea6 2:4d370e3f4618 75 Thread::wait(2000);
ashea6 2:4d370e3f4618 76 eth.disconnect();
ashea6 2:4d370e3f4618 77
ashea6 2:4d370e3f4618 78 // Reset LCD
ashea6 2:4d370e3f4618 79 uLCD.background_color(WHITE);
ashea6 2:4d370e3f4618 80 uLCD.textbackground_color(WHITE);
ashea6 2:4d370e3f4618 81 uLCD.color(RED);
ashea6 2:4d370e3f4618 82 uLCD.cls();
ashea6 2:4d370e3f4618 83 uLCD.text_height(2);
ashea6 2:4d370e3f4618 84
ashea6 2:4d370e3f4618 85 Thread thread_time(time_thread);
ashea6 2:4d370e3f4618 86
4180_1 1:5b8e223e983d 87 FILE *wave_file;
4180_1 1:5b8e223e983d 88 printf("\n\n\nHello, wave world!\n");
ashea6 2:4d370e3f4618 89 wave_file=fopen("/sd/bob.wav","r");
4180_1 1:5b8e223e983d 90 waver.play(wave_file);
4180_1 1:5b8e223e983d 91 fclose(wave_file);
4180_1 1:5b8e223e983d 92 }