yusuke takahashi
/
pingswitch
aa
main.cpp@0:7867a12554f6, 2013-09-11 (annotated)
- Committer:
- yusuke_robocup
- Date:
- Wed Sep 11 02:35:01 2013 +0000
- Revision:
- 0:7867a12554f6
hitotu_ver
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yusuke_robocup | 0:7867a12554f6 | 1 | #include "mbed.h" |
yusuke_robocup | 0:7867a12554f6 | 2 | |
yusuke_robocup | 0:7867a12554f6 | 3 | #define PING_ERR 0xFFFF |
yusuke_robocup | 0:7867a12554f6 | 4 | |
yusuke_robocup | 0:7867a12554f6 | 5 | Timer timer1; |
yusuke_robocup | 0:7867a12554f6 | 6 | Timer ping_t; |
yusuke_robocup | 0:7867a12554f6 | 7 | DigitalOut myled(LED1); |
yusuke_robocup | 0:7867a12554f6 | 8 | |
yusuke_robocup | 0:7867a12554f6 | 9 | |
yusuke_robocup | 0:7867a12554f6 | 10 | uint16_t readPing (void) |
yusuke_robocup | 0:7867a12554f6 | 11 | { |
yusuke_robocup | 0:7867a12554f6 | 12 | |
yusuke_robocup | 0:7867a12554f6 | 13 | DigitalOut PingPinOut(p10); |
yusuke_robocup | 0:7867a12554f6 | 14 | PingPinOut = 1; |
yusuke_robocup | 0:7867a12554f6 | 15 | wait_us(10); |
yusuke_robocup | 0:7867a12554f6 | 16 | PingPinOut = 0; |
yusuke_robocup | 0:7867a12554f6 | 17 | DigitalIn PingPin(p10); |
yusuke_robocup | 0:7867a12554f6 | 18 | //PingPin.mode(PullUp); |
yusuke_robocup | 0:7867a12554f6 | 19 | timer1.reset(); |
yusuke_robocup | 0:7867a12554f6 | 20 | while(PingPin == 0){ |
yusuke_robocup | 0:7867a12554f6 | 21 | if(timer1.read_us() > 1000){ //1ms以上応答なし |
yusuke_robocup | 0:7867a12554f6 | 22 | //pc.printf("1ms\n"); |
yusuke_robocup | 0:7867a12554f6 | 23 | return PING_ERR; |
yusuke_robocup | 0:7867a12554f6 | 24 | } |
yusuke_robocup | 0:7867a12554f6 | 25 | } |
yusuke_robocup | 0:7867a12554f6 | 26 | timer1.reset(); |
yusuke_robocup | 0:7867a12554f6 | 27 | while(PingPin == 1){ |
yusuke_robocup | 0:7867a12554f6 | 28 | if(timer1.read_us() > 18500){ //18.5ms以上のパルス |
yusuke_robocup | 0:7867a12554f6 | 29 | //printf("18.5ms\n"); |
yusuke_robocup | 0:7867a12554f6 | 30 | return PING_ERR; |
yusuke_robocup | 0:7867a12554f6 | 31 | } |
yusuke_robocup | 0:7867a12554f6 | 32 | } |
yusuke_robocup | 0:7867a12554f6 | 33 | |
yusuke_robocup | 0:7867a12554f6 | 34 | return timer1.read_us() / 1000000.0 / 2.0 * 340.0 * 1000.0; //mm MAX:3145; |
yusuke_robocup | 0:7867a12554f6 | 35 | } |
yusuke_robocup | 0:7867a12554f6 | 36 | /* |
yusuke_robocup | 0:7867a12554f6 | 37 | int ulutrasonic_time(int data){ |
yusuke_robocup | 0:7867a12554f6 | 38 | sum -= value[9]; |
yusuke_robocup | 0:7867a12554f6 | 39 | sum += data; |
yusuke_robocup | 0:7867a12554f6 | 40 | value[9] = value[8]; |
yusuke_robocup | 0:7867a12554f6 | 41 | value[8] = value[7]; |
yusuke_robocup | 0:7867a12554f6 | 42 | value[7] = value[6]; |
yusuke_robocup | 0:7867a12554f6 | 43 | value[6] = value[5]; |
yusuke_robocup | 0:7867a12554f6 | 44 | value[5] = value[4]; |
yusuke_robocup | 0:7867a12554f6 | 45 | value[4] = value[3]; |
yusuke_robocup | 0:7867a12554f6 | 46 | value[3] = value[2]; |
yusuke_robocup | 0:7867a12554f6 | 47 | value[2] = value[1]; |
yusuke_robocup | 0:7867a12554f6 | 48 | value[1] = value[0]; |
yusuke_robocup | 0:7867a12554f6 | 49 | value[0] = data; |
yusuke_robocup | 0:7867a12554f6 | 50 | |
yusuke_robocup | 0:7867a12554f6 | 51 | return sum/10; |
yusuke_robocup | 0:7867a12554f6 | 52 | }*/ |
yusuke_robocup | 0:7867a12554f6 | 53 | |
yusuke_robocup | 0:7867a12554f6 | 54 | int ping_button(int ping,int button){ |
yusuke_robocup | 0:7867a12554f6 | 55 | static int continue_flag = 0; |
yusuke_robocup | 0:7867a12554f6 | 56 | static int change_flag = 0; |
yusuke_robocup | 0:7867a12554f6 | 57 | |
yusuke_robocup | 0:7867a12554f6 | 58 | if(continue_flag == 0){ |
yusuke_robocup | 0:7867a12554f6 | 59 | if(ping <= 700){ |
yusuke_robocup | 0:7867a12554f6 | 60 | ping_t.start(); |
yusuke_robocup | 0:7867a12554f6 | 61 | continue_flag = 1; |
yusuke_robocup | 0:7867a12554f6 | 62 | } |
yusuke_robocup | 0:7867a12554f6 | 63 | } |
yusuke_robocup | 0:7867a12554f6 | 64 | |
yusuke_robocup | 0:7867a12554f6 | 65 | if(continue_flag == 1){ |
yusuke_robocup | 0:7867a12554f6 | 66 | //agatterutoki |
yusuke_robocup | 0:7867a12554f6 | 67 | if(ping <= 700){ |
yusuke_robocup | 0:7867a12554f6 | 68 | if(change_flag == 0){ |
yusuke_robocup | 0:7867a12554f6 | 69 | if(ping_t.read_ms() >= 300){ |
yusuke_robocup | 0:7867a12554f6 | 70 | button = !button; |
yusuke_robocup | 0:7867a12554f6 | 71 | change_flag = 1; |
yusuke_robocup | 0:7867a12554f6 | 72 | } |
yusuke_robocup | 0:7867a12554f6 | 73 | } |
yusuke_robocup | 0:7867a12554f6 | 74 | } |
yusuke_robocup | 0:7867a12554f6 | 75 | //tatisagari |
yusuke_robocup | 0:7867a12554f6 | 76 | if(ping >= 900){ |
yusuke_robocup | 0:7867a12554f6 | 77 | ping_t.stop(); |
yusuke_robocup | 0:7867a12554f6 | 78 | ping_t.reset(); |
yusuke_robocup | 0:7867a12554f6 | 79 | continue_flag = 0; |
yusuke_robocup | 0:7867a12554f6 | 80 | change_flag = 0; |
yusuke_robocup | 0:7867a12554f6 | 81 | } |
yusuke_robocup | 0:7867a12554f6 | 82 | } |
yusuke_robocup | 0:7867a12554f6 | 83 | return button; |
yusuke_robocup | 0:7867a12554f6 | 84 | } |
yusuke_robocup | 0:7867a12554f6 | 85 | |
yusuke_robocup | 0:7867a12554f6 | 86 | |
yusuke_robocup | 0:7867a12554f6 | 87 | int main(void) |
yusuke_robocup | 0:7867a12554f6 | 88 | { |
yusuke_robocup | 0:7867a12554f6 | 89 | timer1.start(); |
yusuke_robocup | 0:7867a12554f6 | 90 | ping_t.start(); |
yusuke_robocup | 0:7867a12554f6 | 91 | |
yusuke_robocup | 0:7867a12554f6 | 92 | int button; |
yusuke_robocup | 0:7867a12554f6 | 93 | |
yusuke_robocup | 0:7867a12554f6 | 94 | for(;;){ |
yusuke_robocup | 0:7867a12554f6 | 95 | button = ping_button(readPing(),button); |
yusuke_robocup | 0:7867a12554f6 | 96 | |
yusuke_robocup | 0:7867a12554f6 | 97 | if(button){ |
yusuke_robocup | 0:7867a12554f6 | 98 | myled = 1; |
yusuke_robocup | 0:7867a12554f6 | 99 | }else{ |
yusuke_robocup | 0:7867a12554f6 | 100 | myled = 0; |
yusuke_robocup | 0:7867a12554f6 | 101 | } |
yusuke_robocup | 0:7867a12554f6 | 102 | } |
yusuke_robocup | 0:7867a12554f6 | 103 | } |