クロスラインを通過したらカウントする

Dependencies:   mbed

Files at this revision

API Documentation at this revision

Comitter:
iou16
Date:
Sat Nov 29 18:17:26 2014 +0000
Parent:
2:11e6cc53842f
Commit message:
test

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Wed Aug 27 07:00:17 2014 +0000
+++ b/main.cpp	Sat Nov 29 18:17:26 2014 +0000
@@ -1,45 +1,47 @@
 #include "mbed.h"
 #include "SerialHalfDuplex.h"
 
-#define LINE_BORDER 0.07
+#define LINE_TIMER_LIMIT 0.01
 
-/* ラインセンサ */
-DigitalIn d_sen_r(p14); //digital_sensor_right
-AnalogIn sen_r_s(p17);  //analog_sensor_right_side
-AnalogIn sen_r_c(p16);  //analog_sensor_right_center
-AnalogIn sen_l_c(p15);  //analog_sensor_left_center
-AnalogIn sen_l_s(p18);  //analog_sensor_left_side
-DigitalIn d_sen_l(p13); //digital_sensor_left
+DigitalIn digi_sen_r(p14);
+AnalogIn ana_sen_r_outside(p17);
+AnalogIn ana_sen_r_inside(p16);
+AnalogIn ana_sen_l_inside(p15);
+AnalogIn ana_sen_l_outside(p18);
+DigitalIn digi_sen_l(p13);
 
-/* ラインカウント用カウント */
 Timer LineTimer;
 
-Serial pc(USBTX, USBRX); // tx, rx
+Serial pc(USBTX, USBRX);
+
+void CountLine(void);
+void InitCountLine(void);
+
+int line_count = 0, old_digi_sen_l = 0;
 
 int main() {
-    int line_count, old_d_sen_r, old_d_sen_l;
-    
-    line_count = 0;
-    old_d_sen_r = 0;
-    old_d_sen_l = 0;
-    
+    InitCountLine();
     while(1) {
-        if ((d_sen_r == 1)&&(d_sen_l == 1)) { /* 今回左右のデジタルセンサがラインを踏んでいるなら */
-            if ((old_d_sen_r == 0)||(old_d_sen_l == 0)) { /* 前回左右のデジタルセンサがラインを踏んでいないなら */
-                LineTimer.start(); /* 2つの条件を満たしている時のみラインをカウン */
-            }
-        }
-        if ((d_sen_r == 0)&&(d_sen_l == 0)) {
-            if ((old_d_sen_r == 1)||(old_d_sen_r == 1)) {
+        CountLine();
+        pc.printf("line_count: %d\n", line_count);
+    }
+}
+
+void InitCountLine(void)
+{
+    line_count = 0;
+    old_digi_sen_l = digi_sen_l;    
+}
+
+void CountLine(void)
+{
+    if ((digi_sen_l == 1)&&(old_digi_sen_l == 0)) LineTimer.start();
+        
+        if ((digi_sen_l == 0)&&(old_digi_sen_l == 1)) {
                 LineTimer.stop();
-                if (LineTimer.read() > 0.01) line_count++;
+                if (LineTimer.read() > LINE_TIMER_LIMIT) line_count++;
                 LineTimer.reset();
-                }
         }
         
-        old_d_sen_r = d_sen_r;
-        old_d_sen_l = d_sen_l;
-        pc.printf("line_count: %d\n", line_count);
-        wait(0.001);
-    }
-}
+        old_digi_sen_l = digi_sen_l;
+}
\ No newline at end of file