yusuke takahashi
/
Ping_test
a
main.cpp@0:52c8d2aa9944, 2013-02-27 (annotated)
- Committer:
- yusuke_robocup
- Date:
- Wed Feb 27 02:34:05 2013 +0000
- Revision:
- 0:52c8d2aa9944
ping)))
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yusuke_robocup | 0:52c8d2aa9944 | 1 | #include "mbed.h" |
yusuke_robocup | 0:52c8d2aa9944 | 2 | |
yusuke_robocup | 0:52c8d2aa9944 | 3 | #define PING_ERR 0xFFFF |
yusuke_robocup | 0:52c8d2aa9944 | 4 | |
yusuke_robocup | 0:52c8d2aa9944 | 5 | Timer timer1; |
yusuke_robocup | 0:52c8d2aa9944 | 6 | Serial pc(USBTX, USBRX); // tx, rx |
yusuke_robocup | 0:52c8d2aa9944 | 7 | |
yusuke_robocup | 0:52c8d2aa9944 | 8 | |
yusuke_robocup | 0:52c8d2aa9944 | 9 | uint16_t moving_ave_5point(uint16_t data) |
yusuke_robocup | 0:52c8d2aa9944 | 10 | { |
yusuke_robocup | 0:52c8d2aa9944 | 11 | static uint16_t tmp[5] = {0}; |
yusuke_robocup | 0:52c8d2aa9944 | 12 | static uint32_t sum = 0; |
yusuke_robocup | 0:52c8d2aa9944 | 13 | uint8_t i; |
yusuke_robocup | 0:52c8d2aa9944 | 14 | uint8_t count; |
yusuke_robocup | 0:52c8d2aa9944 | 15 | |
yusuke_robocup | 0:52c8d2aa9944 | 16 | sum -= tmp[4]; |
yusuke_robocup | 0:52c8d2aa9944 | 17 | sum += data; |
yusuke_robocup | 0:52c8d2aa9944 | 18 | tmp[4] = tmp[3]; |
yusuke_robocup | 0:52c8d2aa9944 | 19 | tmp[3] = tmp[2]; |
yusuke_robocup | 0:52c8d2aa9944 | 20 | tmp[2] = tmp[1]; |
yusuke_robocup | 0:52c8d2aa9944 | 21 | tmp[1] = tmp[0]; |
yusuke_robocup | 0:52c8d2aa9944 | 22 | tmp[0] = data; |
yusuke_robocup | 0:52c8d2aa9944 | 23 | |
yusuke_robocup | 0:52c8d2aa9944 | 24 | |
yusuke_robocup | 0:52c8d2aa9944 | 25 | count = 0; |
yusuke_robocup | 0:52c8d2aa9944 | 26 | for(i=0; i<5; i++){ |
yusuke_robocup | 0:52c8d2aa9944 | 27 | if(tmp[i] == PING_ERR){ |
yusuke_robocup | 0:52c8d2aa9944 | 28 | return PING_ERR; |
yusuke_robocup | 0:52c8d2aa9944 | 29 | } |
yusuke_robocup | 0:52c8d2aa9944 | 30 | } |
yusuke_robocup | 0:52c8d2aa9944 | 31 | |
yusuke_robocup | 0:52c8d2aa9944 | 32 | return sum/5; |
yusuke_robocup | 0:52c8d2aa9944 | 33 | } |
yusuke_robocup | 0:52c8d2aa9944 | 34 | |
yusuke_robocup | 0:52c8d2aa9944 | 35 | |
yusuke_robocup | 0:52c8d2aa9944 | 36 | uint16_t readPing (void) |
yusuke_robocup | 0:52c8d2aa9944 | 37 | { |
yusuke_robocup | 0:52c8d2aa9944 | 38 | |
yusuke_robocup | 0:52c8d2aa9944 | 39 | DigitalOut PingPinOut(p13); |
yusuke_robocup | 0:52c8d2aa9944 | 40 | PingPinOut = 1; |
yusuke_robocup | 0:52c8d2aa9944 | 41 | wait_us(10); |
yusuke_robocup | 0:52c8d2aa9944 | 42 | PingPinOut = 0; |
yusuke_robocup | 0:52c8d2aa9944 | 43 | DigitalIn PingPin(p13); |
yusuke_robocup | 0:52c8d2aa9944 | 44 | //PingPin.mode(PullUp); |
yusuke_robocup | 0:52c8d2aa9944 | 45 | timer1.reset(); |
yusuke_robocup | 0:52c8d2aa9944 | 46 | while(PingPin == 0){ |
yusuke_robocup | 0:52c8d2aa9944 | 47 | if(timer1.read_us() > 1000){ //1ms以上応答なし |
yusuke_robocup | 0:52c8d2aa9944 | 48 | //pc.printf("1ms\n"); |
yusuke_robocup | 0:52c8d2aa9944 | 49 | return PING_ERR; |
yusuke_robocup | 0:52c8d2aa9944 | 50 | } |
yusuke_robocup | 0:52c8d2aa9944 | 51 | } |
yusuke_robocup | 0:52c8d2aa9944 | 52 | timer1.reset(); |
yusuke_robocup | 0:52c8d2aa9944 | 53 | while(PingPin == 1){ |
yusuke_robocup | 0:52c8d2aa9944 | 54 | if(timer1.read_us() > 18500){ //18.5ms以上のパルス |
yusuke_robocup | 0:52c8d2aa9944 | 55 | //printf("18.5ms\n"); |
yusuke_robocup | 0:52c8d2aa9944 | 56 | return PING_ERR; |
yusuke_robocup | 0:52c8d2aa9944 | 57 | } |
yusuke_robocup | 0:52c8d2aa9944 | 58 | } |
yusuke_robocup | 0:52c8d2aa9944 | 59 | |
yusuke_robocup | 0:52c8d2aa9944 | 60 | return timer1.read_us(); |
yusuke_robocup | 0:52c8d2aa9944 | 61 | } |
yusuke_robocup | 0:52c8d2aa9944 | 62 | |
yusuke_robocup | 0:52c8d2aa9944 | 63 | int main(void) |
yusuke_robocup | 0:52c8d2aa9944 | 64 | { |
yusuke_robocup | 0:52c8d2aa9944 | 65 | |
yusuke_robocup | 0:52c8d2aa9944 | 66 | timer1.start(); |
yusuke_robocup | 0:52c8d2aa9944 | 67 | |
yusuke_robocup | 0:52c8d2aa9944 | 68 | for(;;){ |
yusuke_robocup | 0:52c8d2aa9944 | 69 | pc.printf("%d\n",moving_ave_5point(readPing())); |
yusuke_robocup | 0:52c8d2aa9944 | 70 | |
yusuke_robocup | 0:52c8d2aa9944 | 71 | wait_us(200); |
yusuke_robocup | 0:52c8d2aa9944 | 72 | } |
yusuke_robocup | 0:52c8d2aa9944 | 73 | } |