Robô móvel com FREDOM KL25Z
Dependencies: Servo mbed HC-SR04
main.cpp
- Committer:
- Nestordp
- Date:
- 2015-02-05
- Revision:
- 3:e5d8eb3e3951
- Parent:
- 2:2e759e231fb6
File content as of revision 3:e5d8eb3e3951:
#include "mbed.h" #include "Servo.h" #include "HCSR04.h" #define velocidade(a, b) MDPWM = a; MEPWM = b #define sentido(a, b) MDdirect = a; MEdirect = b //Sonar Frente //DigitalOut trig(PTB2,0); //Configuração do pino de Trigger //InterruptIn echo(D12); //Configuração da interrupção por pino de Echo DigitalOut bip(D2); // Servo myservo(PTB0); // DigitalOut MEdirect(D4); //Motor 2 Direction control PwmOut MEPWM(D5); //Motor 2 PWM control PwmOut MDPWM(D6); //Motor 1 PWM control DigitalOut MDdirect(D7); //Motor 1 Direction control HCSR04 sonarD(D9, D8); HCSR04 sonarE(D11, D10); HCSR04 sonarF(D13, D12); DigitalOut Led(LED2); Serial pc(USBTX,USBRX); //Configuração da comunicação serial para enviar o valor do sensor void sonarFrente(void); float dist_esq = 0, dist_dir = 0, dist_fre = 0, razDE = 0, Xmeio = 0, Ve = 0.3, Vd = 0.3, Vg = 0.0, Kp = 0.050, ed = 0, ee = 0; int main() { printf("INICIA\n"); myservo.calibrate(0.0013, 45.0); wait_ms(3000); myservo.position(-3.0); Led = 1; //printf("COMECA O PROGRAMA\n"); frente(); velocidade(Vd, Ve); wait_ms(500); while(1){ dist_fre = sonarF.getCm(); /*if (dist_fre <= 20){ velocidade(0.0, 0.0); }*/ //printf("Distancia detectada pelo sensor Frente %.2f cm \n",dist_fre); //wait_ms(1000); dist_esq = sonarE.getCm(); //printf("Distancia detectada pelo sensor esquerdo %.2f cm \n",dist_esq); //wait_ms(1000); dist_dir = sonarD.getCm(); //printf("Distancia detectada pelo sensor direito %.2f cm \n",dist_dir); //wait_ms(1000); Xmeio = (dist_dir + dist_esq) / 2; //Caucula o SetPoint ed = Xmeio - dist_dir; // ee = Xmeio - dist_esq; // Ve = Vg + (ee * Kp); // Vd = Vg + (ed * Kp); // //Ve =(ee * Kp); // //Vd =(ed * Kp); if(Ve > 0.31){ Ve = 0.31; } if(Vd > 0.31){ Vd = 0.31; } if(Ve < 0.18){ Ve = 0.18; } if(Vd < 0.18){ Vd = 0.18; } velocidade(Vd, Ve); } } //****************************************************************************** /*void sonarFrente(void){ bip = 1; printf("PARA\n"); re(); wait_ms(100); velocidade(0.0, 0.0); bip = 0; myservo.position(-33.0); wait_ms(1000); lerSonarF(); printf("Distancia direita %.2f cm \n",distcm); dist_dir = distcm; myservo.position(30.8); wait_ms(1000); lerSonarF(); printf("Distancia esquerda %.2f cm \n",distcm); dist_esq = distcm; if(dist_dir > dist_esq){ printf("VIRA ESQUERDA \n"); direita(); velocidade(0.48, 0.48); wait_ms(250); velocidade(0.0, 0.0); myservo.position(-3.0); wait_ms(500); velocidade(0.48, 0.48); frente(); } else if(dist_dir < dist_esq){ printf("VIRA ESQUERDA \n"); esquerda(); velocidade(0.48, 0.48); wait_ms(250); velocidade(0.0, 0.0); myservo.position(-3.0); wait_ms(500); velocidade(0.48, 0.48); frente(); } }*/