Test funkcnosti HCSR501

Dependencies:   USBDevice mbed millis

Revision:
1:ca6f01b3d4ad
Parent:
0:6238d7962d9f
--- a/main.cpp	Thu Jan 11 18:42:04 2018 +0000
+++ b/main.cpp	Sat Jan 13 11:48:55 2018 +0000
@@ -8,13 +8,56 @@
 USBSerial   serial;
 
 
+int MeasureTriggerDelay(void) {
+    
+    uint8_t measureFlagON = 0;
+    uint8_t completeMeasureFlag = 0;
+    time_t triggerTime, offTime;
+    
+    while(!completeMeasureFlag){
+    
+        if(digitalOutputPIR) {
+        
+            myLed = 0;
+            if(!measureFlagON) {
+            
+                triggerTime = millis() / 1000;
+                serial.printf("/KALIBRACE/ Detekovan pohyb /KALIBRACE/\r\n");
+            
+            }
+            measureFlagON = 1;
+               
+        }
+        else {
+            
+            myLed = 1;
+            offTime = millis() / 1000;
+            serial.printf("/KALIBRACE/ Vystup odpojen, trigger delay je %d sekund /KALIBRACE/\r\n", offTime - triggerTime);
+            if(measureFlagON) completeMeasureFlag = 1;
+             
+       }         
+
+    }
+    
+    return (offTime - triggerTime);
+}
+
 
 int main() {
 
+    int triggerDelayTime = 3; //vychozi nastaveni 3 sekundy
+    uint8_t repeatTriggerCount = 0;
     int printFlag = 0;
-    int triggerTime = 0;        
+    int triggerTime = 0;
+    myLed = 1;
+      
     millisStart();
-        
+    wait(6);
+    
+    serial.printf("Zjistuji dobu aktivniho vystupu - trigger delay\r\n");
+    while(digitalOutputPIR != 1) {};
+    triggerDelayTime = MeasureTriggerDelay();
+    
     while(1) {
         
         if(digitalOutputPIR)
@@ -33,10 +76,12 @@
             int offTime = millis() / 1000;
             if(printFlag) {
                 
+                repeatTriggerCount = ((offTime - triggerTime) / triggerDelayTime) - 1;
+                if(((offTime - triggerTime) / triggerDelayTime - 1) < 0) repeatTriggerCount = 0;
+        
                 serial.printf("LED vypnuta po %d sekundach od sepnuti\r\n", offTime - triggerTime);
-                serial.printf("Opakovany trigger probehl %dx krat\r\n", (offTime - triggerTime) / 4);
-                
-                
+                serial.printf("Opakovany trigger probehl %dx krat\r\n", repeatTriggerCount);
+                      
             }
             myLed = 1;
             printFlag = 0;