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

Dependencies:   mbed

Fork of circle_war_ver_A_NUCLEO_ by 新部内対抗A班

Committer:
baba2357
Date:
Tue Apr 05 17:25:09 2016 +0000
Revision:
14:3403ce49a37a
Parent:
12:2450012ce888
??????;

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