yusuke takahashi
/
pingswitch
aa
main.cpp
- Committer:
- yusuke_robocup
- Date:
- 2013-09-11
- Revision:
- 0:7867a12554f6
File content as of revision 0:7867a12554f6:
#include "mbed.h" #define PING_ERR 0xFFFF Timer timer1; Timer ping_t; DigitalOut myled(LED1); uint16_t readPing (void) { DigitalOut PingPinOut(p10); PingPinOut = 1; wait_us(10); PingPinOut = 0; DigitalIn PingPin(p10); //PingPin.mode(PullUp); timer1.reset(); while(PingPin == 0){ if(timer1.read_us() > 1000){ //1ms以上応答なし //pc.printf("1ms\n"); return PING_ERR; } } timer1.reset(); while(PingPin == 1){ if(timer1.read_us() > 18500){ //18.5ms以上のパルス //printf("18.5ms\n"); return PING_ERR; } } return timer1.read_us() / 1000000.0 / 2.0 * 340.0 * 1000.0; //mm MAX:3145; } /* int ulutrasonic_time(int data){ sum -= value[9]; sum += data; value[9] = value[8]; value[8] = value[7]; value[7] = value[6]; value[6] = value[5]; value[5] = value[4]; value[4] = value[3]; value[3] = value[2]; value[2] = value[1]; value[1] = value[0]; value[0] = data; return sum/10; }*/ int ping_button(int ping,int button){ static int continue_flag = 0; static int change_flag = 0; if(continue_flag == 0){ if(ping <= 700){ ping_t.start(); continue_flag = 1; } } if(continue_flag == 1){ //agatterutoki if(ping <= 700){ if(change_flag == 0){ if(ping_t.read_ms() >= 300){ button = !button; change_flag = 1; } } } //tatisagari if(ping >= 900){ ping_t.stop(); ping_t.reset(); continue_flag = 0; change_flag = 0; } } return button; } int main(void) { timer1.start(); ping_t.start(); int button; for(;;){ button = ping_button(readPing(),button); if(button){ myled = 1; }else{ myled = 0; } } }