赤外線リモコンのパルス幅を表示します

Dependencies:   mbed IRRcevPulseWidth

Fork of irreceiver by Nobuki HIRAMINE

Files at this revision

API Documentation at this revision

Comitter:
nameless129
Date:
Sun Dec 25 03:04:21 2016 +0000
Parent:
1:cc9fd4010a3d
Child:
3:ba3fe24e6306
Commit message:
?????????UART?????????;

Changed in this revision

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
--- a/main.cpp	Sun May 15 15:52:48 2016 +0000
+++ b/main.cpp	Sun Dec 25 03:04:21 2016 +0000
@@ -1,35 +1,52 @@
 #include "mbed.h"
+#include <string.h>
 
-DigitalIn g_dpinIrReceiver(p20);
+#define IR_RCEV_MAX_IR_RECEV_NUM    (400)
+#define IR_RCEV_TIMEOUT_US          (100000)
+
+DigitalIn g_dpinIrReceiver(D12);
 Serial g_serial(USBTX, USBRX);
 
 int main()
 {
-    g_serial.baud(115200);
+    g_serial.baud(9600);
 
     Timer timer;
+    uint32_t IRRcevMicroSec_prev;
+    uint32_t IRRcevMicroSec,IRRcevMicroSec_diff;
+    uint8_t  IRRcevState,IRRcevState_prev = 1;
+    uint16_t IR_RcevData[IR_RCEV_MAX_IR_RECEV_NUM];
+    uint16_t cIRRcev=0;
+    uint16_t i=0;
+
+    memset(IR_RcevData,0,sizeof(IR_RcevData));
     timer.start();
-    int iMicroSec_prev = timer.read_us();
-    int iState,iState_prev = 1;
-    int iMicroSec,iMicroSec_diff;
+    IRRcevMicroSec_prev = timer.read_us();
 
     while(1)
     {
-        iState = g_dpinIrReceiver;
-        if( iState != iState_prev )
+        IRRcevMicroSec = timer.read_us();
+        IRRcevMicroSec_diff = IRRcevMicroSec - IRRcevMicroSec_prev;
+
+        IRRcevState = g_dpinIrReceiver;
+        if( IRRcevState != IRRcevState_prev )
         {
-            iState_prev = iState;
-            iMicroSec = timer.read_us();
-            iMicroSec_diff = iMicroSec - iMicroSec_prev;
-            if(iMicroSec_diff >= 1000000)
+            IRRcevState_prev = IRRcevState;
+            IR_RcevData[cIRRcev] = IRRcevMicroSec_diff;
+            cIRRcev++;
+            IRRcevMicroSec_prev = IRRcevMicroSec;
+        }
+        else if( (IRRcevMicroSec_diff >= IR_RCEV_TIMEOUT_US) && (cIRRcev != 0) )
+        {
+            g_serial.printf("Rceved\r\n");
+            g_serial.printf("RcevCnt:%d\r\n",cIRRcev);
+            for(i=1;i<cIRRcev;i++)
             {
-                g_serial.printf( "\r\n\r\n");
+                g_serial.printf("%d,",IR_RcevData[i]);
             }
-            else
-            {
-                g_serial.printf( "%d, ", iMicroSec_diff );
-            }
-            iMicroSec_prev = iMicroSec;
+            g_serial.printf("\r\n");
+            cIRRcev = 0;
+            memset(IR_RcevData,0,sizeof(IR_RcevData));
         }
     }
 }
--- a/mbed.bld	Sun May 15 15:52:48 2016 +0000
+++ b/mbed.bld	Sun Dec 25 03:04:21 2016 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/7c328cabac7e
\ No newline at end of file
+http://mbed.org/users/mbed_official/code/mbed/builds/9baf128c2fab
\ No newline at end of file