Codigo do seguidor de linha V2 2020.2

Dependencies:   mbed

Revision:
6:5551834026ef
Parent:
0:9efe13b5d868
--- a/motors.cpp	Sat Sep 19 21:31:41 2020 +0000
+++ b/motors.cpp	Sat Oct 10 19:08:11 2020 +0000
@@ -7,7 +7,7 @@
 =================================================*/
 
 //------------------ FUNCOES ----------------------
-float velocidadeBase = 0.18;
+float velocidadePadrao = 0.18;
 
 PwmOut rodaEsquerda(p25); // Potencias da roda e direções
 DigitalOut direcaoEsquerda (p26);
@@ -39,42 +39,54 @@
     else { direcaoDireita = 1; rodaDireita.write(VelocidadeDireita); }
 }
 
-void Acelerando(float velocidadeMax)//Acelera o seguidor de linha
+void Aceleracao(float velocidadeDesejada,int comando)
 {
-    int bandeira = 0;
-    float novaVelocidade = velocidadeBase;
+    int bandeira = 0; //bandeira para controle do while
+    float novaVelocidade = velocidadePadrao;
+    if(comando==1)
+    {
     while(bandeira == 0)
     {
         novaVelocidade = novaVelocidade + 0.01;
         wait_us(1);//Deve ser testado se e necessario esse wait
-        if (novaVelocidade <= velocidadeMax)
+        if (novaVelocidade <= velocidadeDesejada)
         {
             bandeira = 1;
         }
     }
-}
-
-void Desacelerando(float velocidadeMin)//Desacelera o seguidor de linha
-{
-    int bandeira = 0;
-    float novaVelocidade = velocidadeBase;
-    while(bandeira == 0)
+    }
+    else
+    {
+        while(bandeira == 0)
     {
         novaVelocidade = novaVelocidade - 0.01;
         wait_us(1);//Deve ser testado se e necessario esse wait
-        if (novaVelocidade <= velocidadeMin)
+        if (novaVelocidade <= velocidadeDesejada)
         {
             bandeira = 1;
         }
     }
+    }
 }
 
-void VelocidadeBateria() // Funcao de setup da velocidade base dos motores
+float transformaPWM(float velocidadePWM)
+{
+    float leituraBateria = batMeasure;
+    int kv=1100;
+    int R=13;                                           //Raio da roda
+    float rpm=leituraBateria*kv;
+    float velocidadeNova = (2*3.14*R/60)*rpm ;           //Ao calcular essa velocidade temos o equivalente da velocidadePWM=1
+                                                        
+    velocidadeNova=velocidadeNova*velocidadePWM;         //Logo em seguida multiplicamos pela velocidadePWM, dando a porcentagem desejada da nossa velocidade
+    return velocidadeNova;
+}
+
+float VelocidadeBateria(float velocidadeBase) // Funcao de setup da velocidade base dos motores
 {
     float leituraBateria = batMeasure; //Lendo a carga da bateria em um numero de 0 a 1
     float tensaoBateria = 12.6 * leituraBateria; // Carga atual da bateria em Volts
     float novaVelocidade = velocidadeBase * 8.4/tensaoBateria;// Calculando a nova velocidade de acordo com a medida de carga atual da bateria
-    return;
+    return novaVelocidade;
 }
 
 /*float ajustaVelocidade(float velocidadeEsperada, float velocidadeReal)