Codigo do seguidor de linha V2 2020.2

Dependencies:   mbed

Revision:
3:9240a689fbf8
Parent:
2:4db1486af4d5
Child:
4:af8cfbac17bb
--- a/main.cpp	Sat Sep 26 14:36:55 2020 -0300
+++ b/main.cpp	Fri Oct 02 19:34:01 2020 -0300
@@ -19,7 +19,8 @@
 float velocidadeDireita;
 float velocidadeRealEsquerda;
 float velocidadeRealDireita;
-float velocidadeBase = 0.18;
+float velocidadeAtual = 0.18;
+float novaVelocidade;
 
 bool estadoAsaDireita = false;
 bool estadoAsaEsquerda = false;
@@ -61,12 +62,12 @@
                                 //Comando = 3 -> Faz a usando a leitura do mapa e ultrapassando os limites de velocidade
             case 1:
               while(1){ 
-                velocidadeBase = VelocidadeBateria(velocidadeBase);                                                   //Ajuste da velocidade por causa da descarga da bateria 
+                velocidadeAtual = VelocidadeBateria(velocidadeAtual);                                     //Ajuste da velocidade por causa da descarga da bateria 
                 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
-                velocidadeEsquerda = velocidadeBase + correcaoPD;                                       //Ajusta a inicialmente a velocidade das rodas para manter na linha
-                velocidadeDireita = velocidadeBase - correcaoPD;
+                velocidadeEsquerda = velocidadeAtual + correcaoPD;                                       //Ajusta a inicialmente a velocidade das rodas para manter na linha
+                velocidadeDireita = velocidadeAtual - correcaoPD;
                 velocidadeRealDireita = retornaVelDireita(); //velocidade em /m/s
                 velocidadeRealEsquerda = retornaVelEsquerda();
                 velocidadeEsquerda = PID_rodaEsquerda(velocidadeEsquerda,velocidadeRealEsquerda);       //Faz o ajusta final da velocidade das rodas
@@ -89,12 +90,20 @@
 
             case 2:                                                                                     //Percorre a pista com o uso do mapa
               while(1){ 
-                //velocidadeBase = VelocidadeBateria(VELOCIDADE DO MAPA);                                                   //Ajuste da velocidade por causa da descarga da bateria 
+                /* 
+                if(ditancia pra curva < distancia pra desacelerar){                                     //Seleciona a velocidade
+                    novaVelocidade = VelocidadeBateria ( VELOCIDADE DO MAPA + 1)
+                }
+                else{
+                    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
-                velocidadeEsquerda = velocidadeBase + correcaoPD;                                       //Ajusta a inicialmente a velocidade das rodas para manter na linha
-                velocidadeDireita = velocidadeBase - correcaoPD;
+                velocidadeEsquerda = velocidadeAtual + correcaoPD;                                       //Ajusta a inicialmente a velocidade das rodas para manter na linha
+                velocidadeDireita = velocidadeAtual - correcaoPD;
                 velocidadeRealDireita = retornaVelDireita(); //velocidade em /m/s
                 velocidadeRealEsquerda = retornaVelEsquerda();
                 velocidadeEsquerda = PID_rodaEsquerda(velocidadeEsquerda,velocidadeRealEsquerda);       //Faz o ajusta final da velocidade das rodas
@@ -103,10 +112,13 @@
                 estadoAsaDireita = LerAsaDireita();
                 estadoAsaEsquerda = LerAsaEsquerda();
                 if(estadoAsaEsquerda || estadoAsaDireita ){                                             //Checa os sensores laterais
-                    //MAPA + 1 POSICAO                                    //faz o mapeamento da pista
-                    if (estadoAsaDireita && !estadoAsaEsquerda){
+                    if(!estadoAsaEsquerda || estadoAsaDireita){                                         //Leu somente o asa direita
+                        //MAPA + 1 POSICAO                                                              //Atualiza a etapa do mapa da pista que esta sendo lido
+                    }                                                                                   
+                    if(estadoAsaDireita && !estadoAsaEsquerda){                                        //Leu somente a asa esquerda
                         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){
+                            Desacelerando(0);
                             ParadaFinal();                                                              //Para o seguidor na segunda marcacao
                         }
                     }