11 years, 11 months ago.

How to make this program Efficient?

  1. 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; ///////

cases(),values(),forward_S(),forward_F(),backward(),right(),left(),stop();

int main() { while(1) { values(); cases();

}

}

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; }

Hello J Daniel Martinez C,

reformat your question please, use code highlighting (<<code>> <</code>>). Then probably can read your code and post a response.

posted by Martin Kojtal 06 Oct 2013

In adition to what Martin said, also a bit more precise question is handy. Right now it looks like you have ALOT of code, and a very broad question.

posted by Erik - 06 Oct 2013
Be the first to answer this question.