inoue hirohumi
/
line_counter_test
クロスラインを通過したらカウントする
Revision 3:aade65d7ae44, committed 2014-11-29
- 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