IoT Door

Dependencies:   mbed

Fork of HUZZAHESP8266-web-control-LPC1768 by Austin Dong

Revision:
7:eee53c450d3d
Parent:
6:c31fd3a33ea2
Child:
8:e68f8edaa71f
--- a/main.cpp	Thu Mar 09 23:17:18 2017 +0000
+++ b/main.cpp	Fri Mar 10 00:02:53 2017 +0000
@@ -20,6 +20,7 @@
 Timer t_unlock;
 Timer t_alarm;
 Ticker door_sense;
+int alarm_cnt = 0;
 /*
 char ssid[32] = "hsd";     // enter WiFi router ssid inside the quotes
 char pwd [32] = "austin123"; // enter WiFi router password inside the quotes
@@ -61,24 +62,35 @@
 int year        =15;    // last 2 digits
 
 void sensorcheck(){
-    led2 = alarm;
+    led3 = alarm;
+    led2 = armed;
+    speaker_on = 0;
     if(armed){
-            if((ir_sensor.read() > 0.5) && (rangecount < 15)){
+            if((alarm == 0) && (ir_sensor.read() > 0.5) && (rangecount < 3)){
                 if(rangecount == 0) tim.start();
                 rangecount++;
             }
-            else if(rangecount == 15 && tim.read() > 6 && alarm==0){
+            else if(rangecount == 3 && tim.read() > 3 && alarm==0){
                  alarm = 1;
-                 
+                 alarm_cnt++;
+                 rangecount = 0;
                  t_alarm.start();
             }
             else if(ir_sensor.read() < 0.5 && alarm == 0){
                 tim.reset();
                 rangecount = 0;
-                led3 =!led3;
             }
         }
-        else alarm = 0;
+        else {alarm = 0;
+        rangecount = 0;
+        }
+    if(alarm){
+            speaker_on = 1;
+            speaker = 0.10;
+            if (t_alarm < 5.0) speaker.period(1.0/969.0);
+            else if (t_alarm < 10.0) speaker.period(1.0/800.0);
+            else if (t_alarm >= 10.0) t_alarm.reset();
+        }
 }
     
 
@@ -98,7 +110,6 @@
     startserver();
     DataRX=0;
     count=0;
-    led2=1;
     door_sense.attach(&sensorcheck, 1.0);
     while(1) {
         led4 =! led4;
@@ -200,15 +211,11 @@
         SendCMD();
         getreply();
         wait(0.4);
-        strcpy(cmdbuff,"conn:send('Hit count: '..rangecount..'')\r\n");
+        strcpy(cmdbuff,"conn:send('Alarm Count: '..alarm_cnt..')\r\n");
         SendCMD();
         getreply();
         wait(0.2);
-        strcpy(cmdbuff,"conn:send('<br>Sens Count: '..time..'<br><hr>')\r\n");
-        SendCMD();
-        getreply();
-        wait(0.4);
-        strcpy(cmdbuff,"conn:send('Alarm Status: '..alarm..' V<br><hr>')\r\n");
+        strcpy(cmdbuff,"conn:send('Alarm Status: '..alarm..'<br><hr>')\r\n");
         SendCMD();
         getreply();
         wait(0.3);
@@ -224,7 +231,7 @@
         SendCMD();
         getreply();
         wait(0.3);
-        strcpy(cmdbuff, "conn:send('<p><input type=\"checkbox\" name=\"check\" value=\"alarmv\"> Alarm on/off')\r\n");
+        strcpy(cmdbuff, "conn:send('<p><input type=\"checkbox\" name=\"check\" value=\"led3v\"> Alarm on/off')\r\n");
         SendCMD();
         getreply();
         wait(0.3);        
@@ -364,7 +371,7 @@
 // Interupt Routine to read in data from serial port
 void Rx_interrupt() {
     DataRX=1;
-    //led3=1;
+   
 // Loop just in case more than one character is in UART's receive FIFO buffer
 // Stop if buffer full
     while ((esp.readable()) && (((rx_in + 1) % buffer_size) != rx_out)) {
@@ -373,21 +380,20 @@
         pc.putc(rx_buffer[rx_in]);
         rx_in = (rx_in + 1) % buffer_size;
     }
-    //led3=0;
     return;
 }
  
  
 // Interupt Routine to write out data to serial port
 void Tx_interrupt() {
-    //led2=1;
+    
 // Loop to fill more than one character in UART's transmit FIFO buffer
 // Stop if buffer empty
     while ((esp.writeable()) && (tx_in != tx_out)) {
         esp.putc(tx_buffer[tx_out]);
         tx_out = (tx_out + 1) % buffer_size;
     }
-    //led2=0;
+    
     return;
 }