aa

Dependencies:   mbed

Committer:
yusuke_robocup
Date:
Wed Sep 11 02:35:01 2013 +0000
Revision:
0:7867a12554f6
hitotu_ver

Who changed what in which revision?

UserRevisionLine numberNew 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 }