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 8a68046098
36 changed files with 118 additions and 48 deletions

View File

@ -1,5 +1,6 @@
using AgroBase.Forms;
using AgroBase.Services;
using Emgu.CV.ML;
using Emgu.CV.Structure;
using Newtonsoft.Json;
using System;
@ -539,6 +540,34 @@ namespace AgroBase.Models.Modules
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;
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 {
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);
// 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 () {
console.log('Conectado ao broker MQTT');
// Inscrever-se no tópico
// Inscrever-se no t<EFBFBD>pico
client.subscribe('coordenadas_gps', function (err) {
if (!err) {
console.log("Inscrição bem-sucedida no tópico");
console.log("Inscri<EFBFBD><EFBFBD>o bem-sucedida no t<>pico");
} 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) {
// A mensagem é um Buffer, converta para string ou objeto conforme necessário
//console.log(`Mensagem recebida no tópico '${topic}': ${message.toString()}`);
// A mensagem <EFBFBD> um Buffer, converta para string ou objeto conforme necess<73>rio
//console.log(`Mensagem recebida no t<EFBFBD>pico '${topic}': ${message.toString()}`);
var dados = JSON.parse(message);
var novaLatitude = dados.latitude;
var novaLongitude = dados.longitude;
@ -185,18 +185,18 @@
const latB = P2latitude * (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;
// Calcular a direção
// Calcular a dire<EFBFBD><EFBFBD>o
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 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);
// 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;
return direcaoGraus;

View File

@ -290,6 +290,8 @@ class Motor {
GrausPino = (_AgRef < 0 ? -1.0 : 1.0) * _AgRef;
Referenciado = true;
*evento = false;
_Angulo = CalculaAnguloPino(anguloReferencia, *estadoAtual);
}
}
@ -360,41 +362,49 @@ class Motor {
void ReferenciarMotor() {
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)) {
Referenciando = false;
_MotorLigado = false;
} else {
// Inicia o processo de referenciamento se o motor está parado.
if (_Sentido_SP == Parado) {
Referenciando = false;
_MotorLigado = false;
}
else {
if (_Sentido_SP == Parado && _Angulo == 0) {
_Angulo_SP = AgP1;
_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 && _Angulo > _Margem) {
_Angulo_SP = -AgP1; // Muda para antihorário para tentar encontrar o ponto de referência.
_Sentido_SP = Antihorario;
else if (_Sentido_SP == Horario) {
if (_Angulo > _Margem && Referenciado) {
_Angulo_SP = AgP1;
_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 && _Angulo < -_Margem) {
_Angulo_SP = AgP1; // Muda para horário para tentar encontrar o ponto de referência.
_Sentido_SP = Horario;
else if (_Sentido_SP == Antihorario) {
if (_Angulo < -_Margem && Referenciado) {
_Angulo_SP = AgP1;
_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) {
unsigned long firstMilis = millis();
int _delay = delayBalanceamento > 0 ? delayBalanceamento : 5000;
while (1)
{
int _delay = delayBalanceamento > 0 ? delayBalanceamento : 5000;
long intMillis = (millis() - firstMilis);
if (Conectado && delayBalanceamento > 0) {
if (Conectado && intMillis >= _delay) {
BalancearCargasMotores();
firstMilis = millis();
}
vTaskDelay(_delay);
vTaskDelay(1);
}
}