The Alarm Clock that runs away from you when you try to switch it off !

Dependencies:   NokiaLCD mbed

Files at this revision

API Documentation at this revision

Comitter:
sdesai49
Date:
Thu Oct 17 09:37:05 2013 +0000
Commit message:
rev 1.0

Changed in this revision

NokiaLCD.lib Show annotated file Show diff for this revision Revisions of this file
Speaker.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/NokiaLCD.lib	Thu Oct 17 09:37:05 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/NokiaLCD/#2d1b23692cbb
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Speaker.h	Thu Oct 17 09:37:05 2013 +0000
@@ -0,0 +1,19 @@
+#include "mbed.h"
+// new class to play a note on Speaker based on PwmOut class
+class Speaker
+{
+public:
+    Speaker(PinName pin) : _pin(pin) {
+// _pin(pin) means pass pin to the Speaker Constructor
+    }
+// class method to play a note based on PwmOut class
+    void PlayNote(float frequency, float duration, float volume) {
+        _pin.period(1.0/frequency);
+        _pin = volume/2.0;
+        wait(duration);
+        _pin = 0.0;
+    }
+
+private:
+    PwmOut _pin;
+};
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Oct 17 09:37:05 2013 +0000
@@ -0,0 +1,192 @@
+//Header/Library Inclusions : Mbed, Speaker, NokiaLCD.   Links Below 
+//http://mbed.org/users/4180_1/notebook/using-a-speaker-for-audio-output///
+ 
+#include "mbed.h"
+#include "NokiaLCD.h"
+#include "Speaker.h"
+ 
+NokiaLCD lcd(p5, p7, p8, p9, NokiaLCD::LCD6610); // mosi, sclk, cs, rst, type
+DigitalIn set(p19);         // push button for setting the timer
+DigitalIn reset(p20);       // push button for reseting the timer
+DigitalIn incr(p21);        // push button for incrementing hour/min set
+DigitalIn decr(p22);        // push button for decrementing hour/min set
+DigitalIn alarm_stop(p30);      
+DigitalOut myled1(LED3);    // LEDs for testing sensor data reception
+DigitalOut myled2(LED4);    
+AnalogIn dis(p18);      // Analog input for sonar sensor
+DigitalOut fw1(p10);    //Forward Motor 1
+DigitalOut rev1(p11);   //Reverse Motor 1
+DigitalOut fw2(p13);    //Forward Motor 2
+DigitalOut rev2(p14);   //Reverse Motor 2
+DigitalOut pwm(p24);    //Can be kept as PwmOut if speed control desired
+DigitalOut led1(LED1);  
+DigitalOut led2(LED2);
+
+int main() {
+    set_time(1379615410);          // real time clock set
+    Speaker mySpeaker(p26);
+    lcd.cls();
+    lcd.background(0x0000FF);   // Background of blue color
+    int alarm_minute=0;         // integer for storing alarm minutes set   
+    int alarm_hour=0;           // integer for storing alarm hour set
+
+    while(1){
+
+            time_t seconds = time(NULL);
+            lcd.background(0x0000FF);
+            lcd.locate(0,0);
+            lcd.printf("Time : ");
+            lcd.locate(3,2);
+            char buffer[32];                                        // Buffer for storing Time
+            strftime(buffer, 32, "%I:%M:%S", localtime(&seconds));  // http://www.cplusplus.com/reference/ctime/strftime/
+            lcd.printf("%s", buffer);
+            wait(0.10);
+            int i = (((buffer[0] - 48)*10) + (buffer[1]-48));       // Converting from Asci to Int
+            int j = (((buffer[3] - 48)*10) + (buffer[4]-48));
+         
+            lcd.locate(0,5);
+            lcd.printf("Alarm Set for : ");
+            lcd.locate(3,7);
+            lcd.printf("%d : %d",alarm_hour,alarm_minute);
+             if((i == alarm_hour) && (j == alarm_minute))       // When the real time hour/ min match the alarm set
+             {
+                while(1)
+                {
+             
+                     mySpeaker.PlayNote(969.0,0.5,0.3);                 // Speaker with police siren playnote( frequency, duration,volume)
+                     mySpeaker.PlayNote(800.0,0.5,0.3);                 // http://mbed.org/users/4180_1/notebook/using-a-speaker-for-audio-output/
+              //Motor
+                    int per;
+                    per=dis*512/3.3;
+                    if(per<8)
+                    {
+                        led1=1;
+                        led2=0;
+                        pwm=1;
+                        fw1=0;
+                        rev1=1;
+                        fw2=0;
+                        rev2=1;
+                     }
+                    
+                    else 
+                    {
+                        led1=1;
+                        led2=1;
+                        pwm=0;
+                    }
+                    
+                    //motor  code end
+                             
+                             if(alarm_stop == 1)
+                             {
+                                 alarm_minute--;
+                                 break;
+                             }
+                }
+            }
+       if(reset)
+       {
+        int count=0;   
+       while(count!=3)
+       {
+        time_t seconds = time(NULL);
+        lcd.locate(0,0);
+        lcd.printf("Time : ");
+        lcd.locate(3,2);
+                char buffer[32];
+            strftime(buffer, 32, "%I:%M:%S", localtime(&seconds));
+            lcd.printf("%s", buffer);
+             
+    if(count == 2)
+    {
+    
+    lcd.locate(0,8);
+    lcd.printf("Alarm Set to -> ");
+    lcd.locate(3,10);
+    lcd.printf("%02d : %02d ",alarm_hour,alarm_minute);
+    lcd.locate(0,13);
+    lcd.printf("Press Set !");
+    }
+    if(count == 1)
+    {         
+    lcd.locate(0,8);            
+    
+            //strftime(alarm, 2, "%I:%M:%S %p %F\n",);
+            lcd.printf("Selected Hour:" );
+    lcd.locate(3,10);
+    lcd.printf("%02d",alarm_hour );        
+    
+    
+    lcd.locate(0,13);            
+    
+            //strftime(alarm, 2, "%I:%M:%S %p %F\n",);
+    lcd.printf("Select Minute ",alarm_minute );
+    lcd.locate(3,15);
+    lcd.printf("%02d",alarm_minute );
+            //wait(1);
+             //lcd.cls();            
+     }  
+     if(incr && count == 1)
+     { 
+    alarm_minute++;
+    wait(0.25);
+     }
+     if(incr && count == 0)
+     { 
+    alarm_hour++;
+    wait(0.25);
+     }
+     if(alarm_hour==25)
+     {
+     alarm_hour=0;
+     }
+    if(alarm_minute==60)
+    {
+    alarm_minute=0;
+    }   
+    if(decr && count == 1)
+     { 
+    alarm_minute--;
+    wait(0.25);
+     }
+    if(alarm_minute==(-1))
+    {
+    alarm_minute=59;
+    }
+    if(decr && count == 0)
+     { 
+    alarm_hour--;
+    wait(0.25);
+     }
+    if(alarm_hour==(-1))
+    {
+    alarm_hour=24;
+    }
+       
+    if(set)
+    {
+    count = count + 1;
+    wait(0.25);
+    lcd.cls();
+    }
+    if(count == 0) 
+     {
+     
+    lcd.locate(0,8);            
+    
+            //strftime(alarm, 2, "%I:%M:%S %p %F\n",);
+            lcd.printf("Select Hour:" );
+    lcd.locate(3,10);
+    lcd.printf("%02d",alarm_hour );        
+            
+            //wait(1);
+             //lcd.cls();            
+    
+       }
+       
+      }  
+        }
+        
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Oct 17 09:37:05 2013 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/a9913a65894f
\ No newline at end of file