J Daniel Martinez C
/
Sumobot
Sumo mbed
main.cpp
- Committer:
- dan_cuspi
- Date:
- 2013-10-06
- Revision:
- 0:2c00079aafe8
- Child:
- 1:1c837db2123b
File content as of revision 0:2c00079aafe8:
#include "mbed.h" // screen /dev/tty.usbmodemfa132 Serial pc(USBTX, USBRX); PwmOut MotorLPwm(p26); DigitalOut MotorLF(p30); DigitalOut MotorLB(p29); PwmOut MotorRPwm(p25); DigitalOut MotorRF(p11); DigitalOut MotorRB(p12); DigitalIn LineL(p21); DigitalIn LineR(p20); DigitalIn SonarL(p22); DigitalIn SonarR(p19); DigitalIn SonarF(p18); PwmOut led1(LED1),led2(LED2),led3(LED3),led4(LED4); unsigned int LineL_val=0,LineR_val=0,SonarL_val=0,SonarR_val=0,SonarF_val=0,factor=0; //////////////////////////////////// //PWM ||Fast|| ||Slow|| // float pwmF=1, pwmS=.5; // //Giro ||90º|| ||180º|| // float spin90=.1, spin180=1; // /////////////////////////////// void prueba(),cases(),values(),forward_S(),forward_F(),backward(),right(),left(),stop(); int main() { while(1) { values(); cases(); } } void prueba() { led1=pwmF; wait(1); led1=pwmS; wait(1); led1=0; wait(1); } void cases() { switch(factor) { // LineL=1 LineR=10 SonarL=100 SonarR=1000 SonarF=10000 // ||tiempo de paro para reversa|| ||90º|| case 1: factor=0; backward(); wait(.1); right(); wait(.4); break; //sensor linea izquierda case 10: factor=0; backward(); wait(.1); left(); wait(.4); break; //sensor linea derecha case 110: factor=0; backward(); wait(.1); left(); wait(.4); break; //sonar izquierda y linea derecha case 1001: factor=0; backward(); wait(.1); right(); wait(.4); break; //sonar derecha y linea izquierda case 100: factor=0; left(); wait(.4); break; //sonar izquierda case 1000: factor=0; right(); wait(.4); break; //sonar derecha // ||180º|| case 11: factor=0; backward(); wait(.01); right(); wait(.8); break; //2 sensores linea case 10000: factor=0; forward_F(); break;// sonar frontal case 10001: factor=0; forward_F(); break;// sonar frontal linea izquierda case 10010: factor=0; forward_F(); break;// sonar frontal linea derecha case 10011: factor=0; forward_F(); break;// sonar frontal 2 lineas case 11100: factor=0; forward_F(); break;// sonar frontal sonar iaquierda sonar derecha case 0: factor=0; forward_S(); break;// ningun sensor default: factor=0; stop(); break; } } void values() { if (LineL==1) { LineL_val=1; } if (LineR==1) { LineR_val=10; } if (SonarL==1) { SonarL_val=100; } if (SonarR==1) { SonarR_val=1000; } if (SonarF==1) { SonarF_val=10000; } factor=LineL_val+LineR_val+SonarL_val+SonarR_val+SonarF_val; pc.printf ("LL=%i LR=%i SL=%i SR=%i SF=%i F=%i \r\n",LineL_val,LineR_val,SonarL_val,SonarR_val,SonarF_val,factor); LineL_val=0; LineR_val=0; SonarL_val=0; SonarR_val=0; SonarF_val=0; } void stop() { MotorLF=0; MotorLB=0; MotorRF=0; MotorRB=0; led4=0; led3=0; led2=0; led1=0; } void forward_S() { MotorLF=1; MotorLB=0; MotorRF=1; MotorRB=0; MotorLPwm=pwmS; MotorRPwm=pwmS; led4=0; led3=.1; led2=.1; led1=0; } void forward_F() { MotorLF=1; MotorLB=0; MotorRF=1; MotorRB=0; MotorLPwm=pwmF; MotorRPwm=pwmF; led4=0; led3=1; led2=1; led1=0; } void backward() { MotorLF=0; MotorLB=1; MotorRF=0; MotorRB=1; MotorLPwm=pwmF; MotorRPwm=pwmF; led4=.1; led3=.1; led2=.1; led1=.1; } void right() { MotorLF=0; MotorLB=1; MotorRF=1; MotorRB=0; MotorLPwm=pwmF; MotorRPwm=pwmF; led4=0; led3=0; led2=0; led1=1; } void left() { MotorLF=1; MotorLB=0; MotorRF=0; MotorRB=1; MotorLPwm=pwmF; MotorRPwm=pwmF; led4=1; led3=0; led2=0; led1=0; }