2014_Ensoul_Capstone
Dependencies: TextLCD Ultrasonic mbed BufferedSoftSerial
main.cpp@1:2859bfed20b4, 2014-07-03 (annotated)
- Committer:
- leejong87
- Date:
- Thu Jul 03 05:24:13 2014 +0000
- Revision:
- 1:2859bfed20b4
- Parent:
- 0:d429f13fe4be
- Child:
- 2:c9740fccf3a7
Developer
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
leejong87 | 1:2859bfed20b4 | 1 | //Developer Kang, Lee |
leejong87 | 1:2859bfed20b4 | 2 | |
MR_Kang | 0:d429f13fe4be | 3 | #include "mbed.h" |
MR_Kang | 0:d429f13fe4be | 4 | #include "Ultrasonic.h" |
MR_Kang | 0:d429f13fe4be | 5 | |
MR_Kang | 0:d429f13fe4be | 6 | AnalogIn Sharp(p20); |
MR_Kang | 0:d429f13fe4be | 7 | Ultrasonic F_sonic_R(p11,p11); |
MR_Kang | 0:d429f13fe4be | 8 | Ultrasonic F_sonic_L(p12,p12); |
MR_Kang | 0:d429f13fe4be | 9 | Ultrasonic F_sonic_F(p8,p8); |
MR_Kang | 0:d429f13fe4be | 10 | |
MR_Kang | 0:d429f13fe4be | 11 | PwmOut RMotor_Front(p21); |
MR_Kang | 0:d429f13fe4be | 12 | PwmOut LMotor_Front(p23); |
MR_Kang | 0:d429f13fe4be | 13 | PwmOut RMotor_Back(p22); |
MR_Kang | 0:d429f13fe4be | 14 | PwmOut LMotor_Back(p24); |
MR_Kang | 0:d429f13fe4be | 15 | DigitalOut RMotor_EN(p5); |
MR_Kang | 0:d429f13fe4be | 16 | DigitalOut LMotor_EN(p6); |
MR_Kang | 0:d429f13fe4be | 17 | Timeout motortime; |
MR_Kang | 0:d429f13fe4be | 18 | Timeout backmotortime; |
MR_Kang | 0:d429f13fe4be | 19 | Timeout Rightmotortime; |
MR_Kang | 0:d429f13fe4be | 20 | Timeout Leftmotortime; |
MR_Kang | 0:d429f13fe4be | 21 | float a,b =0; |
MR_Kang | 0:d429f13fe4be | 22 | float length; |
MR_Kang | 0:d429f13fe4be | 23 | void Front() |
MR_Kang | 0:d429f13fe4be | 24 | { |
MR_Kang | 0:d429f13fe4be | 25 | RMotor_EN = 1; |
MR_Kang | 0:d429f13fe4be | 26 | LMotor_EN = 1; |
MR_Kang | 0:d429f13fe4be | 27 | RMotor_Back.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 28 | LMotor_Back.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 29 | RMotor_Front.pulsewidth(0.05); |
MR_Kang | 0:d429f13fe4be | 30 | LMotor_Front.pulsewidth(0.05); |
MR_Kang | 0:d429f13fe4be | 31 | } |
MR_Kang | 0:d429f13fe4be | 32 | |
MR_Kang | 0:d429f13fe4be | 33 | void Turn_R() |
MR_Kang | 0:d429f13fe4be | 34 | { |
MR_Kang | 0:d429f13fe4be | 35 | RMotor_EN = 1; |
MR_Kang | 0:d429f13fe4be | 36 | LMotor_EN =1; |
MR_Kang | 0:d429f13fe4be | 37 | LMotor_Front.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 38 | RMotor_Back.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 39 | LMotor_Back.pulsewidth(0.1); |
MR_Kang | 0:d429f13fe4be | 40 | RMotor_Front.pulsewidth(0.1); |
MR_Kang | 0:d429f13fe4be | 41 | } |
MR_Kang | 0:d429f13fe4be | 42 | |
MR_Kang | 0:d429f13fe4be | 43 | void Turn_L() |
MR_Kang | 0:d429f13fe4be | 44 | { |
MR_Kang | 0:d429f13fe4be | 45 | LMotor_EN = 1; |
MR_Kang | 0:d429f13fe4be | 46 | RMotor_EN = 1; |
MR_Kang | 0:d429f13fe4be | 47 | LMotor_Back.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 48 | RMotor_Front.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 49 | RMotor_Back.pulsewidth(0.1); |
MR_Kang | 0:d429f13fe4be | 50 | LMotor_Front.pulsewidth(0.1); |
MR_Kang | 0:d429f13fe4be | 51 | } |
MR_Kang | 0:d429f13fe4be | 52 | void Back() |
MR_Kang | 0:d429f13fe4be | 53 | { |
MR_Kang | 0:d429f13fe4be | 54 | RMotor_EN = 1; |
MR_Kang | 0:d429f13fe4be | 55 | LMotor_EN = 1; |
MR_Kang | 0:d429f13fe4be | 56 | RMotor_Front.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 57 | LMotor_Front.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 58 | RMotor_Back.pulsewidth(0.05); |
MR_Kang | 0:d429f13fe4be | 59 | LMotor_Back.pulsewidth(0.05); |
MR_Kang | 0:d429f13fe4be | 60 | } |
MR_Kang | 0:d429f13fe4be | 61 | void Break() |
MR_Kang | 0:d429f13fe4be | 62 | { |
MR_Kang | 0:d429f13fe4be | 63 | RMotor_Front.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 64 | LMotor_Front.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 65 | RMotor_Back.pulsewidth(0.05); |
MR_Kang | 0:d429f13fe4be | 66 | LMotor_Back.pulsewidth(0.05); |
MR_Kang | 0:d429f13fe4be | 67 | wait(0.1); |
MR_Kang | 0:d429f13fe4be | 68 | RMotor_EN = 0; |
MR_Kang | 0:d429f13fe4be | 69 | LMotor_EN = 0; |
MR_Kang | 0:d429f13fe4be | 70 | } |
MR_Kang | 0:d429f13fe4be | 71 | void Stop() |
MR_Kang | 0:d429f13fe4be | 72 | { |
MR_Kang | 0:d429f13fe4be | 73 | RMotor_EN = 0; |
MR_Kang | 0:d429f13fe4be | 74 | LMotor_EN = 0; |
MR_Kang | 0:d429f13fe4be | 75 | RMotor_Front.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 76 | LMotor_Front.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 77 | RMotor_Back.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 78 | LMotor_Back.pulsewidth(0); |
MR_Kang | 0:d429f13fe4be | 79 | } |
MR_Kang | 0:d429f13fe4be | 80 | |
MR_Kang | 0:d429f13fe4be | 81 | |
MR_Kang | 0:d429f13fe4be | 82 | int dis_L,dis_R,dis_F = 80; |
MR_Kang | 0:d429f13fe4be | 83 | int F_len; |
MR_Kang | 0:d429f13fe4be | 84 | int move,measure,flag=1; |
MR_Kang | 0:d429f13fe4be | 85 | |
MR_Kang | 0:d429f13fe4be | 86 | void count() |
MR_Kang | 0:d429f13fe4be | 87 | { |
MR_Kang | 0:d429f13fe4be | 88 | dis_F =100; |
MR_Kang | 0:d429f13fe4be | 89 | dis_L =100; |
MR_Kang | 0:d429f13fe4be | 90 | dis_R =100; |
MR_Kang | 0:d429f13fe4be | 91 | move =0; |
MR_Kang | 0:d429f13fe4be | 92 | measure =0; |
MR_Kang | 0:d429f13fe4be | 93 | flag=1; |
MR_Kang | 0:d429f13fe4be | 94 | } |
MR_Kang | 0:d429f13fe4be | 95 | |
MR_Kang | 0:d429f13fe4be | 96 | void backcount(){ |
MR_Kang | 0:d429f13fe4be | 97 | move = 1; measure =0; |
MR_Kang | 0:d429f13fe4be | 98 | } |
MR_Kang | 0:d429f13fe4be | 99 | void Rightcount(){ |
MR_Kang | 0:d429f13fe4be | 100 | move = 2; measure =0; |
MR_Kang | 0:d429f13fe4be | 101 | } |
MR_Kang | 0:d429f13fe4be | 102 | void Leftcount(){ |
MR_Kang | 0:d429f13fe4be | 103 | move = 3; measure =0; |
MR_Kang | 0:d429f13fe4be | 104 | } |
MR_Kang | 0:d429f13fe4be | 105 | int main() |
MR_Kang | 0:d429f13fe4be | 106 | { |
MR_Kang | 0:d429f13fe4be | 107 | |
MR_Kang | 0:d429f13fe4be | 108 | while(1) { |
MR_Kang | 0:d429f13fe4be | 109 | |
MR_Kang | 0:d429f13fe4be | 110 | //거리측정 |
MR_Kang | 0:d429f13fe4be | 111 | if(dis_F==F_sonic_F.read()/10) { |
MR_Kang | 0:d429f13fe4be | 112 | dis_F = 80;} |
MR_Kang | 0:d429f13fe4be | 113 | if(dis_R==F_sonic_R.read()/10) { |
MR_Kang | 0:d429f13fe4be | 114 | dis_R = 90;} |
MR_Kang | 0:d429f13fe4be | 115 | if(dis_L==F_sonic_L.read()/10) { |
MR_Kang | 0:d429f13fe4be | 116 | dis_L = 90;} |
MR_Kang | 0:d429f13fe4be | 117 | |
MR_Kang | 0:d429f13fe4be | 118 | if(dis_F!=F_sonic_F.read()/10) { |
MR_Kang | 0:d429f13fe4be | 119 | dis_F = F_sonic_F.read()/10; |
MR_Kang | 0:d429f13fe4be | 120 | } |
MR_Kang | 0:d429f13fe4be | 121 | if(dis_R!=F_sonic_R.read()/10) { |
MR_Kang | 0:d429f13fe4be | 122 | dis_R = F_sonic_R.read()/10; |
MR_Kang | 0:d429f13fe4be | 123 | } |
MR_Kang | 0:d429f13fe4be | 124 | if(dis_L!=F_sonic_L.read()/10) { |
MR_Kang | 0:d429f13fe4be | 125 | dis_L = F_sonic_L.read()/10; |
MR_Kang | 0:d429f13fe4be | 126 | } |
MR_Kang | 0:d429f13fe4be | 127 | |
MR_Kang | 0:d429f13fe4be | 128 | printf("Front: %d\n",dis_F); |
MR_Kang | 0:d429f13fe4be | 129 | printf("Right: %d\n",dis_L); |
MR_Kang | 0:d429f13fe4be | 130 | printf("Left : %d\n",dis_R); |
MR_Kang | 0:d429f13fe4be | 131 | printf("move : %d\n",move); |
MR_Kang | 0:d429f13fe4be | 132 | |
MR_Kang | 0:d429f13fe4be | 133 | /* if(dis_R <50) { |
MR_Kang | 0:d429f13fe4be | 134 | if(dis_L <50){ |
MR_Kang | 0:d429f13fe4be | 135 | if(dis_F >50){ |
MR_Kang | 0:d429f13fe4be | 136 | move =0;}}} |
MR_Kang | 0:d429f13fe4be | 137 | else if(dis_L <50) { |
MR_Kang | 0:d429f13fe4be | 138 | if(dis_R <50){ |
MR_Kang | 0:d429f13fe4be | 139 | if(dt is_F >50){ |
MR_Kang | 0:d429f13fe4be | 140 | move =0;}}}*/ |
MR_Kang | 0:d429f13fe4be | 141 | |
MR_Kang | 0:d429f13fe4be | 142 | |
MR_Kang | 0:d429f13fe4be | 143 | switch(measure){ |
MR_Kang | 0:d429f13fe4be | 144 | case 0: |
MR_Kang | 0:d429f13fe4be | 145 | if(dis_F >30) { |
MR_Kang | 0:d429f13fe4be | 146 | if(dis_R <50) { |
MR_Kang | 0:d429f13fe4be | 147 | if((dis_R + 5) < dis_L){ |
MR_Kang | 0:d429f13fe4be | 148 | move =2; measure =1;} |
MR_Kang | 0:d429f13fe4be | 149 | } else if(dis_L <50) { |
MR_Kang | 0:d429f13fe4be | 150 | if((dis_L + 5) < dis_R){ |
MR_Kang | 0:d429f13fe4be | 151 | move =3;measure =1;} |
MR_Kang | 0:d429f13fe4be | 152 | } else { |
MR_Kang | 0:d429f13fe4be | 153 | move =0; measure =1; |
MR_Kang | 0:d429f13fe4be | 154 | } |
MR_Kang | 0:d429f13fe4be | 155 | } else if(dis_F<30) { |
MR_Kang | 0:d429f13fe4be | 156 | move =1; measure =1; |
MR_Kang | 0:d429f13fe4be | 157 | } |
MR_Kang | 0:d429f13fe4be | 158 | break; |
MR_Kang | 0:d429f13fe4be | 159 | } |
MR_Kang | 0:d429f13fe4be | 160 | |
MR_Kang | 0:d429f13fe4be | 161 | |
MR_Kang | 0:d429f13fe4be | 162 | if(dis_R <10){move=5;} |
MR_Kang | 0:d429f13fe4be | 163 | else if(dis_L <10){ move =6;} |
MR_Kang | 0:d429f13fe4be | 164 | else if((dis_R <25) &&(dis_L<25)){move =4;} |
MR_Kang | 0:d429f13fe4be | 165 | else if(dis_R <35){move =2;} |
MR_Kang | 0:d429f13fe4be | 166 | else if(dis_L <35){move =3;} |
MR_Kang | 0:d429f13fe4be | 167 | |
MR_Kang | 0:d429f13fe4be | 168 | switch(move) { |
MR_Kang | 0:d429f13fe4be | 169 | case 0://Front |
MR_Kang | 0:d429f13fe4be | 170 | Front(); |
MR_Kang | 0:d429f13fe4be | 171 | measure =0; |
MR_Kang | 0:d429f13fe4be | 172 | break; |
MR_Kang | 0:d429f13fe4be | 173 | |
MR_Kang | 0:d429f13fe4be | 174 | case 1://Back |
MR_Kang | 0:d429f13fe4be | 175 | Stop(); |
MR_Kang | 0:d429f13fe4be | 176 | measure =0; |
MR_Kang | 0:d429f13fe4be | 177 | break; |
MR_Kang | 0:d429f13fe4be | 178 | |
MR_Kang | 0:d429f13fe4be | 179 | case 2://Right |
MR_Kang | 0:d429f13fe4be | 180 | Turn_R(); |
MR_Kang | 0:d429f13fe4be | 181 | if (flag==1) { |
MR_Kang | 0:d429f13fe4be | 182 | flag=0; |
MR_Kang | 0:d429f13fe4be | 183 | motortime.attach(&count,1); |
MR_Kang | 0:d429f13fe4be | 184 | } |
MR_Kang | 0:d429f13fe4be | 185 | wait(1); |
MR_Kang | 0:d429f13fe4be | 186 | break; |
MR_Kang | 0:d429f13fe4be | 187 | |
MR_Kang | 0:d429f13fe4be | 188 | case 3://Left |
MR_Kang | 0:d429f13fe4be | 189 | Turn_L(); |
MR_Kang | 0:d429f13fe4be | 190 | if (flag==1) { |
MR_Kang | 0:d429f13fe4be | 191 | flag=0; |
MR_Kang | 0:d429f13fe4be | 192 | motortime.attach(&count,1); |
MR_Kang | 0:d429f13fe4be | 193 | } |
MR_Kang | 0:d429f13fe4be | 194 | wait(1); |
MR_Kang | 0:d429f13fe4be | 195 | break; |
MR_Kang | 0:d429f13fe4be | 196 | |
MR_Kang | 0:d429f13fe4be | 197 | case 4://back |
MR_Kang | 0:d429f13fe4be | 198 | Back(); |
MR_Kang | 0:d429f13fe4be | 199 | backmotortime.attach(&backcount,2); |
MR_Kang | 0:d429f13fe4be | 200 | break; |
MR_Kang | 0:d429f13fe4be | 201 | case 5://Right |
MR_Kang | 0:d429f13fe4be | 202 | Back(); |
MR_Kang | 0:d429f13fe4be | 203 | Rightmotortime.attach(&Rightcount,2); |
MR_Kang | 0:d429f13fe4be | 204 | break; |
MR_Kang | 0:d429f13fe4be | 205 | case 6://back |
MR_Kang | 0:d429f13fe4be | 206 | Back(); |
MR_Kang | 0:d429f13fe4be | 207 | Leftmotortime.attach(&Leftcount,2); |
MR_Kang | 0:d429f13fe4be | 208 | break; |
MR_Kang | 0:d429f13fe4be | 209 | } |
MR_Kang | 0:d429f13fe4be | 210 | } |
MR_Kang | 0:d429f13fe4be | 211 | |
MR_Kang | 0:d429f13fe4be | 212 | } |