Codigo do seguidor de linha V2 2020.2

Dependencies:   mbed

Revision:
5:b07a3cfe017d
Parent:
4:af8cfbac17bb
--- a/main.cpp	Fri Oct 02 20:00:39 2020 -0300
+++ b/main.cpp	Sat Oct 03 19:12:04 2020 +0000
@@ -70,10 +70,14 @@
                 correcaoPD = PID_Sensores(erroSensores);                                                //Calcula a correção do PD angular
                 velocidadeEsquerda = velocidadeAtual + correcaoPD;                                       //Ajusta a inicialmente a velocidade das rodas para manter na linha
                 velocidadeDireita = velocidadeAtual - correcaoPD;
-                velocidadeRealDireita = retornaVelDireita(); //velocidade em /m/s
+                velocidadeRealDireita = retornaVelDireita();                                            //velocidade em /m/s
                 velocidadeRealEsquerda = retornaVelEsquerda();
-                velocidadeEsquerda = PID_rodaEsquerda(velocidadeEsquerda,velocidadeRealEsquerda);       //Faz o ajusta final da velocidade das rodas
-                velocidadeDireita = PID_rodaDireita(velocidadeDireita,velocidadeRealDireita);
+                velocidadeEsquerda = transformaPWM(velocidadeEsquerda);                                  //Converte velocidade PWM em m/s
+                velocidadeDireita = transformaPWM(velocidadeDireita);
+                correcaoEsquerda = PID_rodaEsquerda(velocidadeEsquerda,velocidadeRealEsquerda);       //Faz o ajusta final da velocidade das rodas
+                correcaoDireita = PID_rodaDireita(velocidadeDireita,velocidadeRealDireita);
+                velocidadeEsquerda += correcaoEsquerda;
+                velocidadeDireita += correcaoDireita;
                 ControleMotores(velocidadeEsquerda,velocidadeDireita);                                  //Muda a velocidade das rodas para as velocidades calculadas anteriormente
                 estadoAsaDireita = LerAsaDireita();
                 estadoAsaEsquerda = LerAsaEsquerda();
@@ -81,7 +85,8 @@
                     mapeamento(estadoAsaEsquerda,estadoAsaDireita);                                     //faz o mapeamento da pista
                     if (estadoAsaDireita && !estadoAsaEsquerda){
                         contadorAsaDireita++;                                                           //Faz as contagens das marcacoes a direita
-                        if(contadorAsaDireita >=2){//ARRUMAR UM JEITO DE DAR UM TEMPO ENTRE A LEITURA E O SEGUIDOR PARAR PARA ELE PASSAR TODO PELA LINHA DE CHAGADA
+                        if(contadorAsaDireita >=2){                                                      //ARRUMAR UM JEITO DE DAR UM TEMPO ENTRE A LEITURA E O SEGUIDOR PARAR PARA ELE PASSAR TODO PELA LINHA DE CHAGADA
+                            Aceleracao(0,0);                              
                             ParadaFinal();                                                              //Para o seguidor na segunda marcacao
                         }
                     }
@@ -100,7 +105,7 @@
                     novaVelocidade = VelocidadeBateria(VELOCIDADE DO MAPA);
                 }  
                 Acelerando(float novaVelocidade);                                                       //Acelera ou desacelera o robo
-                */      
+                */       
                 LerSensoresFrontais();                                                                  //Leitura dos sensores frontais
                 erroSensores = CalculaErro();                                                           //Calcula o arco do erro dos sensores
                 correcaoPD = PID_Sensores(erroSensores);                                                //Calcula a correção do PD angular
@@ -108,10 +113,12 @@
                 velocidadeDireita = velocidadeAtual - correcaoPD;
                 velocidadeRealDireita = retornaVelDireita(); 
                 velocidadeRealEsquerda = retornaVelEsquerda();
+                velocidadeEsquerda = transformaPWM(velocidadeEsquerda);                                  //Converte velocidade PWM em m/s
+                velocidadeDireita = transformaPWM(velocidadeDireita);
                 correcaoEsquerda = PID_rodaEsquerda(velocidadeEsquerda,velocidadeRealEsquerda);       //Faz o ajusta final da velocidade das rodas
                 correcaoDireita = PID_rodaDireita(velocidadeDireita,velocidadeRealDireita);
+                velocidadeEsquerda += correcaoEsquerda; 
                 velocidadeDireita += correcaoDireita;
-                velocidadeEsquerda += correcaoEsquerda; 
                 ControleMotores(velocidadeEsquerda,velocidadeDireita);                                  //Muda a velocidade das rodas para as velocidades calculadas anteriormente
                 estadoAsaDireita = LerAsaDireita();
                 estadoAsaEsquerda = LerAsaEsquerda();
@@ -122,7 +129,7 @@
                     if(estadoAsaDireita && !estadoAsaEsquerda){                                        //Leu somente a asa esquerda
                         contadorAsaDireita++;                                                           //Faz as contagens das marcacoes a direita
                         if(contadorAsaDireita >=2){
-                            Desacelerando(0);
+                            Aceleracao(0,0);
                             ParadaFinal();                                                              //Para o seguidor na segunda marcacao
                         }
                     }