Codigo do seguidor de linha V2 2020.2
Dependencies: mbed
Diff: motors.cpp
- 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)