Merge branch 'Enfileiramento' of bitbucket.org:zendioninc/agrobot_base into Enfileiramento

This commit is contained in:
Diego Freitas 2024-05-10 09:31:15 -03:00
commit 3dbd6c7638
36 changed files with 118 additions and 48 deletions

View File

@ -1,5 +1,6 @@
using AgroBase.Forms; using AgroBase.Forms;
using AgroBase.Services; using AgroBase.Services;
using Emgu.CV.ML;
using Emgu.CV.Structure; using Emgu.CV.Structure;
using Newtonsoft.Json; using Newtonsoft.Json;
using System; using System;
@ -539,6 +540,34 @@ namespace AgroBase.Models.Modules
Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola = angulo; Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola = angulo;
Console.WriteLine("x: " + x + ", y: " + y + ", z: " + z);
// Calcula o ângulo em radianos usando Math.Atan2(z, x)
double angleRad = Math.Atan2(z, x);
// Converte o ângulo de radianos para graus
double angleDeg = angleRad * (180 / Math.PI);
// Ajusta o ângulo para estar entre 0 e 360 graus
if (angleDeg < 0)
{
angleDeg += 360;
}
Console.WriteLine("xz: " + angleDeg);
double angleRad2 = Math.Atan2(y, x);
// Converte o ângulo de radianos para graus
double angleDeg2 = angleRad2 * (180 / Math.PI);
// Ajusta o ângulo para estar entre 0 e 360 graus
if (angleDeg2 < 0)
{
angleDeg2 += 360;
}
Console.WriteLine("xy: " + angleDeg2);
AtualizaGrafico = true; AtualizaGrafico = true;
break; break;
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[{"Momento":"2024-05-07T15:03:24.0754304-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":130.0733310470406,"AnguloCarroBussola":0.0,"AnguloCarro":130.0733310470406,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:28.8724617-03:00","VelocidadeMedia":0.055,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.5159836441025689],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":41.402606415230593,"AnguloCarroBussola":0.0,"AnguloCarro":41.402606415230593,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:33.8868472-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.8395621033797918],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":145.82708321395091,"AnguloCarroBussola":0.0,"AnguloCarro":145.82708321395091,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:38.886932-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[7.5533992949426789],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":165.57818474637634,"AnguloCarroBussola":0.0,"AnguloCarro":165.57818474637634,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:43.8979192-03:00","VelocidadeMedia":0.03,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[9.1535074923871509],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":44.527629629184787,"AnguloCarroBussola":0.0,"AnguloCarro":44.527629629184787,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:48.9469204-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[10.997372504326716],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":177.05573200896538,"AnguloCarroBussola":0.0,"AnguloCarro":177.05573200896538,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:53.9059201-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[15.357085247674101],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":287.15120341137487,"AnguloCarroBussola":0.0,"AnguloCarro":287.15120341137487,"SonarFrontal":null},{"Momento":"2024-05-07T15:03:58.8953487-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:03.8999344-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:08.8873012-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:13.8925877-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:18.8902042-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null},{"Momento":"2024-05-07T15:04:19.2209745-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[16.093005713272017],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":300.27951033696468,"AnguloCarroBussola":0.0,"AnguloCarro":300.27951033696468,"SonarFrontal":null}]

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"CapacidadeReservatorio":30.0,"AtuacaoNivelAlto":true,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":34.42987713140743},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":14.876485059544191},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.103588945512129},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.437319738098896},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"BombaPressurizadora":{"ID":"BOMBA","BombaAtuada":false,"Ligado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[14,35,36,37,5],"PressaoSP":85.0,"Pressao":82.01,"Potencia":0.0},"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":25222.0,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":[1117263.12],"ValorMinimo":-1.281631101976581E+32,"ValorMaximo":2.8836731440342142E+24,"LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","Leituras":[82.01],"ValorMinimo":0.0,"ValorMaximo":127.63,"LimiteMaximo":120.0,"LimiteMinimo":60.0}],"PercentualInicioPulverizacao":0.3,"ScriptDeteccaoErvas":"weed-detector-v7.py","_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"_MassaLeitura":1117263.12,"MassaReservatorio":15.236908365395459,"VolumeReservatorio":14.511341300376627,"PercentualReservatorio":48.371137667922085,"VolumeVazaoAferido":102.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"_LeituraPulsos":0,"_LeituraPeriodo":0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"_LeituraPressao":2631.0,"PressaoLinha":82.01,"PressaoLinhaCalc":82.0030336996337} {"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"CapacidadeReservatorio":30.0,"AtuacaoNivelAlto":true,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":true,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":34.42987713140743},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":14.876485059544191},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.103588945512129},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.437319738098896},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"BombaPressurizadora":{"ID":"BOMBA","BombaAtuada":false,"Ligado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[14,35,36,37,5],"PressaoSP":85.0,"Pressao":82.01,"Potencia":0.0},"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":25222.0,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":[1117263.12],"ValorMinimo":-1.281631101976581E+32,"ValorMaximo":2.8836731440342142E+24,"LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","Leituras":[82.01],"ValorMinimo":0.0,"ValorMaximo":127.63,"LimiteMaximo":120.0,"LimiteMinimo":60.0}],"PercentualInicioPulverizacao":0.3,"ScriptDeteccaoErvas":"weed-detector-v7.py","_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"_MassaLeitura":1117263.12,"MassaReservatorio":15.236908365395459,"VolumeReservatorio":14.511341300376627,"PercentualReservatorio":48.371137667922085,"VolumeVazaoAferido":102.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"_LeituraPulsos":0,"_LeituraPeriodo":0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"_LeituraPressao":2631.0,"PressaoLinha":82.01,"PressaoLinhaCalc":82.0030336996337}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -103,7 +103,7 @@
} }
} else { } else {
console.log("Feature com ID " + idGeometria + " não encontrada."); console.log("Feature com ID " + idGeometria + " n<EFBFBD>o encontrada.");
} }
} }
@ -139,26 +139,26 @@
}).addTo(map_485de4fe4992e7b597d3f52d56de1299); }).addTo(map_485de4fe4992e7b597d3f52d56de1299);
// Conectar ao broker MQTT // Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura const client = mqtt.connect('ws://localhost:9001'); // Use wss para conex<EFBFBD>o segura
// Quando conectado, inscreva-se no tópico desejado // Quando conectado, inscreva-se no t<EFBFBD>pico desejado
client.on('connect', function () { client.on('connect', function () {
console.log('Conectado ao broker MQTT'); console.log('Conectado ao broker MQTT');
// Inscrever-se no tópico // Inscrever-se no t<EFBFBD>pico
client.subscribe('coordenadas_gps', function (err) { client.subscribe('coordenadas_gps', function (err) {
if (!err) { if (!err) {
console.log("Inscrição bem-sucedida no tópico"); console.log("Inscri<EFBFBD><EFBFBD>o bem-sucedida no t<>pico");
} else { } else {
console.error("Falha na inscrição do tópico", err); console.error("Falha na inscri<EFBFBD><EFBFBD>o do t<>pico", err);
} }
}); });
}); });
// Lidar com mensagens recebidas para o tópico inscrito // Lidar com mensagens recebidas para o t<EFBFBD>pico inscrito
client.on('message', function (topic, message) { client.on('message', function (topic, message) {
// A mensagem é um Buffer, converta para string ou objeto conforme necessário // A mensagem <EFBFBD> um Buffer, converta para string ou objeto conforme necess<73>rio
//console.log(`Mensagem recebida no tópico '${topic}': ${message.toString()}`); //console.log(`Mensagem recebida no t<EFBFBD>pico '${topic}': ${message.toString()}`);
var dados = JSON.parse(message); var dados = JSON.parse(message);
var novaLatitude = dados.latitude; var novaLatitude = dados.latitude;
var novaLongitude = dados.longitude; var novaLongitude = dados.longitude;
@ -185,18 +185,18 @@
const latB = P2latitude * (Math.PI / 180.0); const latB = P2latitude * (Math.PI / 180.0);
const lonB = P2longitude * (Math.PI / 180.0); const lonB = P2longitude * (Math.PI / 180.0);
// Calcular a diferença de longitude // Calcular a diferen<EFBFBD>a de longitude
const deltaLon = lonB - lonA; const deltaLon = lonB - lonA;
// Calcular a direção // Calcular a dire<EFBFBD><EFBFBD>o
const y = Math.sin(deltaLon) * Math.cos(latB); const y = Math.sin(deltaLon) * Math.cos(latB);
const x = Math.cos(latA) * Math.sin(latB) - Math.sin(latA) * Math.cos(latB) * Math.cos(deltaLon); const x = Math.cos(latA) * Math.sin(latB) - Math.sin(latA) * Math.cos(latB) * Math.cos(deltaLon);
const direcaoRadianos = Math.atan2(y, x); const direcaoRadianos = Math.atan2(y, x);
// Converter a direção de radianos para graus // Converter a dire<EFBFBD><EFBFBD>o de radianos para graus
let direcaoGraus = direcaoRadianos * (180.0 / Math.PI); let direcaoGraus = direcaoRadianos * (180.0 / Math.PI);
// Normalizar a direção para que esteja no intervalo de 0 a 360 graus // Normalizar a dire<EFBFBD><EFBFBD>o para que esteja no intervalo de 0 a 360 graus
direcaoGraus = (direcaoGraus + 360) % 360; direcaoGraus = (direcaoGraus + 360) % 360;
return direcaoGraus; return direcaoGraus;

View File

@ -290,6 +290,8 @@ class Motor {
GrausPino = (_AgRef < 0 ? -1.0 : 1.0) * _AgRef; GrausPino = (_AgRef < 0 ? -1.0 : 1.0) * _AgRef;
Referenciado = true; Referenciado = true;
*evento = false; *evento = false;
_Angulo = CalculaAnguloPino(anguloReferencia, *estadoAtual);
} }
} }
@ -360,41 +362,49 @@ class Motor {
void ReferenciarMotor() { void ReferenciarMotor() {
int AgP1 = RefMax / 2; int AgP1 = RefMax / 2;
int AgP2 = RefMax;
// Verifica se o motor já está na posição de referência (dentro da margem de 0º).
if (Referenciado && (_Angulo >= -_Margem && _Angulo <= _Margem)) { if (Referenciado && (_Angulo >= -_Margem && _Angulo <= _Margem)) {
Referenciando = false; Referenciando = false;
_MotorLigado = false; _MotorLigado = false;
} else { }
// Inicia o processo de referenciamento se o motor está parado. else {
if (_Sentido_SP == Parado) { if (_Sentido_SP == Parado && _Angulo == 0) {
_Angulo_SP = AgP1; _Angulo_SP = AgP1;
_Sentido_SP = Horario; _Sentido_SP = Horario;
} }
// Verifica se o motor excedeu a margem de referência enquanto se move no sentido horário. else if (_Sentido_SP == Horario) {
else if (_Sentido_SP == Horario && _Angulo > _Margem) { if (_Angulo > _Margem && Referenciado) {
_Angulo_SP = -AgP1; // Muda para antihorário para tentar encontrar o ponto de referência. _Angulo_SP = AgP1;
_Sentido_SP = Antihorario; _Sentido_SP = Antihorario;
}
else if (_Angulo >= AgP1) {
_Angulo_SP = AgP1;
_Sentido_SP = Antihorario;
}
else if (_Angulo >= RefMax) {
_Angulo_SP = AgP2;
_Sentido_SP = Antihorario;
}
} }
// Verifica se o motor excedeu a margem de referência enquanto se move no sentido antihorário. else if (_Sentido_SP == Antihorario) {
else if (_Sentido_SP == Antihorario && _Angulo < -_Margem) { if (_Angulo < -_Margem && Referenciado) {
_Angulo_SP = AgP1; // Muda para horário para tentar encontrar o ponto de referência. _Angulo_SP = AgP1;
_Sentido_SP = Horario; _Sentido_SP = Horario;
}
else if (_Angulo <= -AgP1) {
_Angulo_SP = AgP2;
_Sentido_SP = Antihorario;
}
else if (_Angulo <= -AgP2) {
_Angulo_SP = AgP2;
_Sentido_SP = Horario;
}
else if (_Angulo <= RefMin) {
_Angulo_SP = AgP2;
_Sentido_SP = Horario;
}
} }
// Continua o processo de referenciamento conforme a lógica original.
else if (_Sentido_SP == Horario && _Angulo >= AgP1) {
_Angulo_SP = -AgP1;
_Sentido_SP = Antihorario;
}
else if (_Sentido_SP == Antihorario && _Angulo <= -AgP1) {
_Angulo_SP = AgP1 * 2;
_Sentido_SP = Horario;
}
else if (_Sentido_SP == Horario && _Angulo >= AgP1 * 2) {
_Angulo_SP = -AgP1 * 2;
_Sentido_SP = Antihorario;
}
// Adiciona mais condições conforme necessário para cobrir o processo completo de referenciamento.
} }
} }

View File

@ -569,15 +569,19 @@ void RecalcularRelacaoPPR() {
} }
void BalanceamentoTask(void *pvParameters) { void BalanceamentoTask(void *pvParameters) {
unsigned long firstMilis = millis();
int _delay = delayBalanceamento > 0 ? delayBalanceamento : 5000;
while (1) while (1)
{ {
int _delay = delayBalanceamento > 0 ? delayBalanceamento : 5000; long intMillis = (millis() - firstMilis);
if (Conectado && delayBalanceamento > 0) { if (Conectado && intMillis >= _delay) {
BalancearCargasMotores(); BalancearCargasMotores();
firstMilis = millis();
} }
vTaskDelay(_delay); vTaskDelay(1);
} }
} }