新部内対抗A班 / Mbed 2 deprecated circle_war_ver_A_NUCLEO__

Dependencies:   mbed

Fork of circle_war_ver_A_NUCLEO_ by 新部内対抗A班

Committer:
naoakiarimoto
Date:
Mon Apr 04 09:25:57 2016 +0000
Revision:
12:2450012ce888
Child:
14:3403ce49a37a
add pin

Who changed what in which revision?

UserRevisionLine numberNew contents of line
naoakiarimoto 12:2450012ce888 1 // bole&bloss検出関数の定義
naoakiarimoto 12:2450012ce888 2 // bole:測距 bloss:タッチ
naoakiarimoto 12:2450012ce888 3
naoakiarimoto 12:2450012ce888 4
naoakiarimoto 12:2450012ce888 5
naoakiarimoto 12:2450012ce888 6 typedef struct{
naoakiarimoto 12:2450012ce888 7 int r;
naoakiarimoto 12:2450012ce888 8 int l;
naoakiarimoto 12:2450012ce888 9 }survey;
naoakiarimoto 12:2450012ce888 10
naoakiarimoto 12:2450012ce888 11 survey IR_check();
naoakiarimoto 12:2450012ce888 12
naoakiarimoto 12:2450012ce888 13 int check(int n,bool c);
naoakiarimoto 12:2450012ce888 14
naoakiarimoto 12:2450012ce888 15 long rater(long x, long in_min, long in_max, long out_min, long out_max) {
naoakiarimoto 12:2450012ce888 16 return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
naoakiarimoto 12:2450012ce888 17 }
naoakiarimoto 12:2450012ce888 18
naoakiarimoto 12:2450012ce888 19
naoakiarimoto 12:2450012ce888 20 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
naoakiarimoto 12:2450012ce888 21 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
naoakiarimoto 12:2450012ce888 22
naoakiarimoto 12:2450012ce888 23
naoakiarimoto 12:2450012ce888 24
naoakiarimoto 12:2450012ce888 25 void state_check() { //タッチセンサ確認
naoakiarimoto 12:2450012ce888 26
naoakiarimoto 12:2450012ce888 27 sw1_n=sw1;
naoakiarimoto 12:2450012ce888 28 sw2_n=sw2;
naoakiarimoto 12:2450012ce888 29
naoakiarimoto 12:2450012ce888 30 if(sw1_n*sw1_p*sw2_n*sw2_p) {
naoakiarimoto 12:2450012ce888 31 sw_state=1;
naoakiarimoto 12:2450012ce888 32 }else{
naoakiarimoto 12:2450012ce888 33 sw_state=0;
naoakiarimoto 12:2450012ce888 34 }
naoakiarimoto 12:2450012ce888 35
naoakiarimoto 12:2450012ce888 36 sw1_p=sw1_n;
naoakiarimoto 12:2450012ce888 37 sw2_p=sw2_n;
naoakiarimoto 12:2450012ce888 38 }
naoakiarimoto 12:2450012ce888 39
naoakiarimoto 12:2450012ce888 40
naoakiarimoto 12:2450012ce888 41
naoakiarimoto 12:2450012ce888 42 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
naoakiarimoto 12:2450012ce888 43 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
naoakiarimoto 12:2450012ce888 44
naoakiarimoto 12:2450012ce888 45
naoakiarimoto 12:2450012ce888 46
naoakiarimoto 12:2450012ce888 47 void bole_check() { //測距センサ確認
naoakiarimoto 12:2450012ce888 48 double res;
naoakiarimoto 12:2450012ce888 49
naoakiarimoto 12:2450012ce888 50 uw.output();
naoakiarimoto 12:2450012ce888 51 uw=0;
naoakiarimoto 12:2450012ce888 52 wait_us(10);
naoakiarimoto 12:2450012ce888 53 uw=1;
naoakiarimoto 12:2450012ce888 54 wait_us(3);
naoakiarimoto 12:2450012ce888 55 uw=0;
naoakiarimoto 12:2450012ce888 56
naoakiarimoto 12:2450012ce888 57 uw.input();
naoakiarimoto 12:2450012ce888 58 meas_pulse.start();
naoakiarimoto 12:2450012ce888 59 while(!uw) {
naoakiarimoto 12:2450012ce888 60 meas_pulse.reset();
naoakiarimoto 12:2450012ce888 61 meas_pulse.start();
naoakiarimoto 12:2450012ce888 62 }
naoakiarimoto 12:2450012ce888 63 do {
naoakiarimoto 12:2450012ce888 64 res=meas_pulse.read_us();
naoakiarimoto 12:2450012ce888 65 } while(uw);
naoakiarimoto 12:2450012ce888 66 meas_pulse.stop();
naoakiarimoto 12:2450012ce888 67
naoakiarimoto 12:2450012ce888 68 dist=(res/2)*340/1000; //[us]*[mm/us]=[mm]
naoakiarimoto 12:2450012ce888 69
naoakiarimoto 12:2450012ce888 70 pc.printf("%8.3f\t",dist);
naoakiarimoto 12:2450012ce888 71
naoakiarimoto 12:2450012ce888 72 if(UWMIN<dist<UWMAX) {
naoakiarimoto 12:2450012ce888 73 UW=1;
naoakiarimoto 12:2450012ce888 74 } else {
naoakiarimoto 12:2450012ce888 75 UW=0;
naoakiarimoto 12:2450012ce888 76 }
naoakiarimoto 12:2450012ce888 77
naoakiarimoto 12:2450012ce888 78 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
naoakiarimoto 12:2450012ce888 79
naoakiarimoto 12:2450012ce888 80 survey val;
naoakiarimoto 12:2450012ce888 81
naoakiarimoto 12:2450012ce888 82 val=IR_check();
naoakiarimoto 12:2450012ce888 83
naoakiarimoto 12:2450012ce888 84 // pc.printf("%d\t%d\n\r", r, l);
naoakiarimoto 12:2450012ce888 85
naoakiarimoto 12:2450012ce888 86
naoakiarimoto 12:2450012ce888 87 if(val.r<LIMITR&&val.l<LIMITL) {
naoakiarimoto 12:2450012ce888 88 IR=1;
naoakiarimoto 12:2450012ce888 89 } else {
naoakiarimoto 12:2450012ce888 90 IR=0;
naoakiarimoto 12:2450012ce888 91 }
naoakiarimoto 12:2450012ce888 92
naoakiarimoto 12:2450012ce888 93 }
naoakiarimoto 12:2450012ce888 94
naoakiarimoto 12:2450012ce888 95
naoakiarimoto 12:2450012ce888 96 survey IR_check(){
naoakiarimoto 12:2450012ce888 97 survey c;
naoakiarimoto 12:2450012ce888 98
naoakiarimoto 12:2450012ce888 99 c.r=check(100,1);
naoakiarimoto 12:2450012ce888 100 c.l=check(100,0);
naoakiarimoto 12:2450012ce888 101
naoakiarimoto 12:2450012ce888 102 //analog値(0~65535)->mV(0~3300)
naoakiarimoto 12:2450012ce888 103 c.r=rater(c.r,0,65535,0,3300);
naoakiarimoto 12:2450012ce888 104 c.l=rater(c.l,0,65535,0,3300);
naoakiarimoto 12:2450012ce888 105 //mV(600~2200)->mm(500~40)
naoakiarimoto 12:2450012ce888 106 c.r=rater(c.r,600,2200,500,40);
naoakiarimoto 12:2450012ce888 107 c.l=rater(c.l,600,2200,500,40);
naoakiarimoto 12:2450012ce888 108
naoakiarimoto 12:2450012ce888 109 pc.printf("IR:r=%d l=%d\n\r",c.r,c.l);
naoakiarimoto 12:2450012ce888 110 pc.printf("\n\r");
naoakiarimoto 12:2450012ce888 111
naoakiarimoto 12:2450012ce888 112 return c;
naoakiarimoto 12:2450012ce888 113
naoakiarimoto 12:2450012ce888 114 }
naoakiarimoto 12:2450012ce888 115
naoakiarimoto 12:2450012ce888 116 int check(int n,bool s){
naoakiarimoto 12:2450012ce888 117 long a=0;
naoakiarimoto 12:2450012ce888 118
naoakiarimoto 12:2450012ce888 119 if(s){
naoakiarimoto 12:2450012ce888 120 for(int i=0;i<n;i++){
naoakiarimoto 12:2450012ce888 121 a=a+IR_r.read_u16();
naoakiarimoto 12:2450012ce888 122 }
naoakiarimoto 12:2450012ce888 123 }else{
naoakiarimoto 12:2450012ce888 124 for(int i=0;i<n;i++){
naoakiarimoto 12:2450012ce888 125 a=a+IR_l.read_u16();
naoakiarimoto 12:2450012ce888 126 }
naoakiarimoto 12:2450012ce888 127 }
naoakiarimoto 12:2450012ce888 128
naoakiarimoto 12:2450012ce888 129 return a/n;
naoakiarimoto 12:2450012ce888 130 }