LEDの点滅や、ブザーのOn,Offの周期測定をおこなう。 搬送波の周期は測定できない(10ms周期以上のON,OFF)

Dependencies:   AQM0802A DigitalSw mbed

Revision:
1:d4291fd3a94c
Parent:
0:c5384fa0fc28
Child:
2:f22110fb3925
--- a/priodMsurement.cpp	Sat May 20 01:33:48 2017 +0000
+++ b/priodMsurement.cpp	Sat May 20 12:23:42 2017 +0000
@@ -0,0 +1,91 @@
+#include "mbed.h"
+#include <AQM0802A.h>
+#include "priodMsurement.h"
+
+I2C i2c(p28, p27);
+AQM0802A lcd(i2c);    // if 5.0v supply, (i2c, false);
+
+Timer timer;
+uint16_t onTime;
+uint16_t offTime;
+int8_t beforeLevel; // 0:Lo 1:Hi -1:timeOut(non Pluse)
+
+InterruptIn lightIn(p22);
+DigitalOut monitor(LED4);
+
+void priodMsurementMain(void)
+{
+    if((timer.read_ms() > Z_nonSignalTime) && (beforeLevel != -1)){
+        printf("end \r\n");
+        timer.reset();
+        beforeLevel = -1;
+        }
+}
+
+void ledOn(void)
+{
+    monitor = 1;
+
+    switch(beforeLevel) {
+        case 0:
+            offTime = timer.read_ms();
+            timer.reset();
+
+            printf(" off = %d\r\n\r\n",offTime);
+
+            lcd.cls();
+            lcd.printf("on %d off %d",onTime, offTime);
+
+            break;
+        case -1:
+        case 1:
+        default:
+            timer.reset();
+            printf("start: off to on\r\n");
+            break;
+
+    }
+    beforeLevel = 1;
+
+}
+
+void ledOff(void)
+{
+    monitor = 0;
+
+    switch(beforeLevel) {
+        case 1:
+            onTime = timer.read_ms();
+            if(onTime > Z_offNonDetectTime){
+            timer.reset();
+            printf(" on = %d\r\n",onTime);
+            /*
+                        lcd.cls();
+                        lcd.printf("on %d off %d",onTime, offTime);
+            */
+            }
+            else{
+                // noise or dinamic output have a chancel.
+                }
+            break;
+        case -1:
+        case 0:
+        default:
+            timer.reset();
+            printf("start: on to off\r\n");
+            break;
+
+    }
+    beforeLevel = 0;
+
+
+
+}
+
+void priodMsurementInitalize(void)
+{
+    timer.start();
+
+    lightIn.rise(&ledOn);
+    lightIn.fall(&ledOff);
+}