Clock
Dependencies: 4DGL-uLCD-SE EthernetInterface NTPClient TextLCD mbed PinDetect SDFileSystem wave_player mbed-rtos
Fork of Internet_LCD_Clock by
Revision 3:b4e7f126c80a, committed 2016-04-11
- Comitter:
- ashea6
- Date:
- Mon Apr 11 17:56:48 2016 +0000
- Parent:
- 2:f73e4b3e6d2f
- Child:
- 4:9c06e27ebc20
- Commit message:
- functions
Changed in this revision
--- a/Internet_LCD_Clock.cpp Mon Apr 11 16:23:49 2016 +0000 +++ b/Internet_LCD_Clock.cpp Mon Apr 11 17:56:48 2016 +0000 @@ -1,15 +1,124 @@ #include "mbed.h" #include "EthernetNetIf.h" #include "NTPClient.h" -#include "TextLCD.h" +#include "uLCD_4DGL.h" +#include "Speaker.h" +#include "SDFileSystem.h" +#include "wave_player.h" +#include <vector> +#include <string> + // Internet of Things clock example: LCD time is set via internet NTP time server -TextLCD lcd(p15, p16, p17, p18, p19, p20); // rs, e, d0-d3 +uLCD_4DGL lcd(p28,p27,p29); // create a global LCD object EthernetNetIf eth; NTPClient ntp; +SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card +AnalogOut DACout(p18); //speaker +wave_player waver(&DACout); +PinDetect snooze(p15); //snooze button +PinDetect off(p16); //turn alarm off + +#define snoozeTime 420 + +//Global Variables +//variables for SD sound +vector <string> filenames; +int current = 0; +bool play = false; sd_insert = false; +static int veclen = 5; +FILE *wave_file; +//variables for alarm +//system time structure +time_t ctTime; //ctTime = current time +// Base alarm time-24 hour clock +int baseAlarmHour = 0; //0-23 +int baseAlarmMin = 0; +// Current alarm time +int curAlarmHour = 0; //0-23 +int curAlarmMin = 0; + +//Check for SD Card +void sd_check(){ + int sdPre = sdd.read(); + while (sdPre == 0){ + lcd.locate(0,0); + lcd.printf("Insert SD card"); + sdPre = sdd.read(); + wait (.5); + } + lcd.cls(); +} + +//Read File Names +void read_file_names(char *dir) +{ + DIR *dp; + struct dirent *dirp; + dp = opendir(dir); + //read all directory and file names in current directory into filename vector + while((dirp = readdir(dp)) != NULL) { + filenames.push_back(string(dirp->d_name)); + } +} + +//Play file from SD card +void play_file() +{ + bool* play_point = &play; + string file_name("/sd/"); + file_name += filenames[current]; + wave_file = fopen(file_name.c_str(),"r"); + while(play){ + waver.play(wave_file, play_point); + } + fclose(wave_file); +} + +//Interrupt-Snooze Function +void snooze_hit_callback (void) +{ + play = false; + time_t = newtime; + struct tm * timeinfo; + + newtime = ctTime + snoozeTime; + timeinfo = localtime (&newtime); + curAlarmMin = timeinfo.tm_min; + curAlarmHour = timeinfo.tm_hour; +} + +//Interrupt- Off Function +void off_hit_callback (void) +{ + play = false; + curAlarmMin = baseAlarmMin; + curAlarmHour = baseAlarmHour; +} +//Time Compare Function +void timeCompare() +{ + struct tm * timeinfo; + + //time(&ctTime); + timeinfo = localtime (&ctTime); + if (timeinfo.tm_min == curAlarmMin && timeinfo.tm_hour == curAlarmHour) + { + play = true; + play_file(); + } +} + int main() { -//system time structure - time_t ctTime; + + snooze.mode(PullUp); + off.mode(PullUp); + wait(.01); + snooze.attach_deasserted(&snooze_hit_callback); + off.attach_deasserted(&off_hit_callback); + snooze.setSampleFrequency(); + off.setSampleFrequency(); + //clear LCD lcd.cls(); // lcd.printf prints to LCD display; @@ -36,6 +145,7 @@ lcd.cls(); ctTime = time(NULL); lcd.printf("UTC: %s", ctime(&ctTime)); + timeCompare(); wait(.25); } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PinDetect.lib Mon Apr 11 17:56:48 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/AjK/code/PinDetect/#cb3afc45028b
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Mon Apr 11 17:56:48 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/SDFileSystem/#c8f66dc765d4
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wave_player.lib Mon Apr 11 17:56:48 2016 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/sravet/code/wave_player/#1a8c5af90d33