2014_Ensoul_Capstone
Dependencies: TextLCD Ultrasonic mbed BufferedSoftSerial
main.cpp
- Committer:
- MR_Kang
- Date:
- 2014-07-03
- Revision:
- 0:d429f13fe4be
- Child:
- 1:2859bfed20b4
File content as of revision 0:d429f13fe4be:
#include "mbed.h" #include "Ultrasonic.h" AnalogIn Sharp(p20); Ultrasonic F_sonic_R(p11,p11); Ultrasonic F_sonic_L(p12,p12); Ultrasonic F_sonic_F(p8,p8); PwmOut RMotor_Front(p21); PwmOut LMotor_Front(p23); PwmOut RMotor_Back(p22); PwmOut LMotor_Back(p24); DigitalOut RMotor_EN(p5); DigitalOut LMotor_EN(p6); Timeout motortime; Timeout backmotortime; Timeout Rightmotortime; Timeout Leftmotortime; float a,b =0; float length; void Front() { RMotor_EN = 1; LMotor_EN = 1; RMotor_Back.pulsewidth(0); LMotor_Back.pulsewidth(0); RMotor_Front.pulsewidth(0.05); LMotor_Front.pulsewidth(0.05); } void Turn_R() { RMotor_EN = 1; LMotor_EN =1; LMotor_Front.pulsewidth(0); RMotor_Back.pulsewidth(0); LMotor_Back.pulsewidth(0.1); RMotor_Front.pulsewidth(0.1); } void Turn_L() { LMotor_EN = 1; RMotor_EN = 1; LMotor_Back.pulsewidth(0); RMotor_Front.pulsewidth(0); RMotor_Back.pulsewidth(0.1); LMotor_Front.pulsewidth(0.1); } void Back() { RMotor_EN = 1; LMotor_EN = 1; RMotor_Front.pulsewidth(0); LMotor_Front.pulsewidth(0); RMotor_Back.pulsewidth(0.05); LMotor_Back.pulsewidth(0.05); } void Break() { RMotor_Front.pulsewidth(0); LMotor_Front.pulsewidth(0); RMotor_Back.pulsewidth(0.05); LMotor_Back.pulsewidth(0.05); wait(0.1); RMotor_EN = 0; LMotor_EN = 0; } void Stop() { RMotor_EN = 0; LMotor_EN = 0; RMotor_Front.pulsewidth(0); LMotor_Front.pulsewidth(0); RMotor_Back.pulsewidth(0); LMotor_Back.pulsewidth(0); } int dis_L,dis_R,dis_F = 80; int F_len; int move,measure,flag=1; void count() { dis_F =100; dis_L =100; dis_R =100; move =0; measure =0; flag=1; } void backcount(){ move = 1; measure =0; } void Rightcount(){ move = 2; measure =0; } void Leftcount(){ move = 3; measure =0; } int main() { while(1) { //거리측정 if(dis_F==F_sonic_F.read()/10) { dis_F = 80;} if(dis_R==F_sonic_R.read()/10) { dis_R = 90;} if(dis_L==F_sonic_L.read()/10) { dis_L = 90;} if(dis_F!=F_sonic_F.read()/10) { dis_F = F_sonic_F.read()/10; } if(dis_R!=F_sonic_R.read()/10) { dis_R = F_sonic_R.read()/10; } if(dis_L!=F_sonic_L.read()/10) { dis_L = F_sonic_L.read()/10; } printf("Front: %d\n",dis_F); printf("Right: %d\n",dis_L); printf("Left : %d\n",dis_R); printf("move : %d\n",move); /* if(dis_R <50) { if(dis_L <50){ if(dis_F >50){ move =0;}}} else if(dis_L <50) { if(dis_R <50){ if(dt is_F >50){ move =0;}}}*/ switch(measure){ case 0: if(dis_F >30) { if(dis_R <50) { if((dis_R + 5) < dis_L){ move =2; measure =1;} } else if(dis_L <50) { if((dis_L + 5) < dis_R){ move =3;measure =1;} } else { move =0; measure =1; } } else if(dis_F<30) { move =1; measure =1; } break; } if(dis_R <10){move=5;} else if(dis_L <10){ move =6;} else if((dis_R <25) &&(dis_L<25)){move =4;} else if(dis_R <35){move =2;} else if(dis_L <35){move =3;} switch(move) { case 0://Front Front(); measure =0; break; case 1://Back Stop(); measure =0; break; case 2://Right Turn_R(); if (flag==1) { flag=0; motortime.attach(&count,1); } wait(1); break; case 3://Left Turn_L(); if (flag==1) { flag=0; motortime.attach(&count,1); } wait(1); break; case 4://back Back(); backmotortime.attach(&backcount,2); break; case 5://Right Back(); Rightmotortime.attach(&Rightcount,2); break; case 6://back Back(); Leftmotortime.attach(&Leftcount,2); break; } } }