atualizacoes do sonar

This commit is contained in:
Diego Freitas 2024-04-16 10:16:07 -03:00
parent c5dd908c8c
commit 89486293fe
30 changed files with 109 additions and 137 deletions

Binary file not shown.

View File

@ -3,24 +3,12 @@
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\", "WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
"Documents": [ "Documents": [
{ {
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\modules\\direcionalmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\mapasmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\direcionalmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}, },
{ {
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", "AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\frmpinout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomapagpsmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" "RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmpinout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\sonarmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\sonarmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\modules\\sensoriamentomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\sensoriamentomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\gpsservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
} }
], ],
"DocumentGroupContainers": [ "DocumentGroupContainers": [
@ -30,68 +18,33 @@
"DocumentGroups": [ "DocumentGroups": [
{ {
"DockedWidth": 200, "DockedWidth": 200,
"SelectedChildIndex": 3, "SelectedChildIndex": 1,
"Children": [ "Children": [
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 1, "DocumentIndex": 1,
"Title": "OperacaoMapaGPSModel.cs", "Title": "frmPinout.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs", "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmPinout.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs", "RelativeDocumentMoniker": "AgroBase\\Forms\\frmPinout.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs", "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmPinout.cs",
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoMapaGPSModel.cs", "RelativeToolTip": "AgroBase\\Forms\\frmPinout.cs",
"ViewState": "AQIAAGACAAAAAAAAAAAnwHUCAAAmAAAA", "ViewState": "AQIAACYAAAAAAAAAAAArwKkAAAAMAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-04-12T13:21:22.58Z" "WhenOpened": "2024-04-16T10:54:37.079Z",
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "SensoriamentoModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
"ViewState": "AQIAAPcBAAAAAAAAAAArwCICAAArAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-04-12T11:06:00.27Z"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "SonarModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\SonarModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\SonarModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\SonarModel.cs",
"RelativeToolTip": "AgroBase\\Models\\SonarModel.cs",
"ViewState": "AQIAADkAAAAAAAAAAAAvwFMAAAAMAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-04-11T23:46:37.051Z"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "MapasModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\MapasModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\MapasModel.cs",
"RelativeToolTip": "AgroBase\\Models\\MapasModel.cs",
"ViewState": "AQIAAJAAAAAAAAAAAAAEwKwAAAAsAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-04-11T21:39:31.046Z",
"EditorCaption": "" "EditorCaption": ""
}, },
{ {
"$type": "Document", "$type": "Document",
"DocumentIndex": 4, "DocumentIndex": 0,
"Title": "GPSService.cs", "Title": "DirecionalModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\GPSService.cs", "DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\DirecionalModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\GPSService.cs", "RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\DirecionalModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\GPSService.cs", "ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\DirecionalModel.cs",
"RelativeToolTip": "AgroBase\\Services\\GPSService.cs", "RelativeToolTip": "AgroBase\\Models\\Modules\\DirecionalModel.cs",
"ViewState": "AQIAAKwAAAAAAAAAAAD4v+IAAAAIAAAA", "ViewState": "AQIAABEAAAAAAAAAAAAAwBkAAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-04-11T21:39:24.948Z" "WhenOpened": "2024-04-16T10:49:41.263Z",
"EditorCaption": ""
} }
] ]
} }

View File

@ -160,7 +160,7 @@ namespace AgroBase.Forms
chbMCP1.Checked = Pinout.ExpansorGPIO; chbMCP1.Checked = Pinout.ExpansorGPIO;
txtMCP1.Text = Pinout.EnderecoExpansor; txtMCP1.Text = Pinout.EnderecoExpansor;
//Funcoes.ForEach(x => Pinos.Add(Enum.GetName(typeof(FuncoesPinout), x))); Funcoes.ForEach(x => Pinos.Add(Enum.GetName(typeof(FuncoesPinout), x)));
foreach (var Dispositivo in Dispositivos) foreach (var Dispositivo in Dispositivos)
{ {
@ -171,10 +171,6 @@ namespace AgroBase.Forms
cmbs.AddRange(gpbMCP1.Controls.OfType<ComboBox>().ToList()); cmbs.AddRange(gpbMCP1.Controls.OfType<ComboBox>().ToList());
foreach (var cmb in cmbs) foreach (var cmb in cmbs)
{ {
if (cmb.Name.Contains("A"))
{
}
cmb.SelectedIndexChanged -= Cmb_SelectedIndexChanged; cmb.SelectedIndexChanged -= Cmb_SelectedIndexChanged;
cmb.SelectedIndexChanged += Cmb_SelectedIndexChanged; cmb.SelectedIndexChanged += Cmb_SelectedIndexChanged;
cmb.Items.Clear(); cmb.Items.Clear();

View File

@ -34,6 +34,8 @@
this.lblDistanciaOperacao = new System.Windows.Forms.Label(); this.lblDistanciaOperacao = new System.Windows.Forms.Label();
this.btnIniciarSimulacao = new System.Windows.Forms.Button(); this.btnIniciarSimulacao = new System.Windows.Forms.Button();
this.gpbSonar = new System.Windows.Forms.GroupBox(); this.gpbSonar = new System.Windows.Forms.GroupBox();
this.chbMoverObstaculo = new System.Windows.Forms.CheckBox();
this.chbSonarVirando = new System.Windows.Forms.CheckBox();
this.btnAdicionarDeteccao = new System.Windows.Forms.Button(); this.btnAdicionarDeteccao = new System.Windows.Forms.Button();
this.lblAnguloFinal = new System.Windows.Forms.Label(); this.lblAnguloFinal = new System.Windows.Forms.Label();
this.txtAnguloFinal = new System.Windows.Forms.TextBox(); this.txtAnguloFinal = new System.Windows.Forms.TextBox();
@ -58,8 +60,6 @@
this.pnlOrientacaoTrajeto = new System.Windows.Forms.Panel(); this.pnlOrientacaoTrajeto = new System.Windows.Forms.Panel();
this.pnlSonar = new System.Windows.Forms.Panel(); this.pnlSonar = new System.Windows.Forms.Panel();
this.picSonar = new System.Windows.Forms.PictureBox(); this.picSonar = new System.Windows.Forms.PictureBox();
this.chbSonarVirando = new System.Windows.Forms.CheckBox();
this.chbMoverObstaculo = new System.Windows.Forms.CheckBox();
this.pnlOpcoes.SuspendLayout(); this.pnlOpcoes.SuspendLayout();
this.gpbSonar.SuspendLayout(); this.gpbSonar.SuspendLayout();
this.gpbGPS.SuspendLayout(); this.gpbGPS.SuspendLayout();
@ -142,6 +142,26 @@
this.gpbSonar.TabStop = false; this.gpbSonar.TabStop = false;
this.gpbSonar.Text = "Sonar"; this.gpbSonar.Text = "Sonar";
// //
// chbMoverObstaculo
//
this.chbMoverObstaculo.AutoSize = true;
this.chbMoverObstaculo.Location = new System.Drawing.Point(165, 43);
this.chbMoverObstaculo.Name = "chbMoverObstaculo";
this.chbMoverObstaculo.Size = new System.Drawing.Size(129, 20);
this.chbMoverObstaculo.TabIndex = 29;
this.chbMoverObstaculo.Text = "Mover obstáculo";
this.chbMoverObstaculo.UseVisualStyleBackColor = true;
//
// chbSonarVirando
//
this.chbSonarVirando.AutoSize = true;
this.chbSonarVirando.Location = new System.Drawing.Point(165, 84);
this.chbSonarVirando.Name = "chbSonarVirando";
this.chbSonarVirando.Size = new System.Drawing.Size(117, 20);
this.chbSonarVirando.TabIndex = 28;
this.chbSonarVirando.Text = "Sonar atuando";
this.chbSonarVirando.UseVisualStyleBackColor = true;
//
// btnAdicionarDeteccao // btnAdicionarDeteccao
// //
this.btnAdicionarDeteccao.Location = new System.Drawing.Point(93, 79); this.btnAdicionarDeteccao.Location = new System.Drawing.Point(93, 79);
@ -386,26 +406,6 @@
this.picSonar.TabIndex = 0; this.picSonar.TabIndex = 0;
this.picSonar.TabStop = false; this.picSonar.TabStop = false;
// //
// chbSonarVirando
//
this.chbSonarVirando.AutoSize = true;
this.chbSonarVirando.Location = new System.Drawing.Point(165, 84);
this.chbSonarVirando.Name = "chbSonarVirando";
this.chbSonarVirando.Size = new System.Drawing.Size(117, 20);
this.chbSonarVirando.TabIndex = 28;
this.chbSonarVirando.Text = "Sonar atuando";
this.chbSonarVirando.UseVisualStyleBackColor = true;
//
// chbMoverObstaculo
//
this.chbMoverObstaculo.AutoSize = true;
this.chbMoverObstaculo.Location = new System.Drawing.Point(165, 43);
this.chbMoverObstaculo.Name = "chbMoverObstaculo";
this.chbMoverObstaculo.Size = new System.Drawing.Size(129, 20);
this.chbMoverObstaculo.TabIndex = 29;
this.chbMoverObstaculo.Text = "Mover obstáculo";
this.chbMoverObstaculo.UseVisualStyleBackColor = true;
//
// frmSimulacaoMapaGPS // frmSimulacaoMapaGPS
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
@ -416,6 +416,7 @@
this.Controls.Add(this.pnlOpcoes); this.Controls.Add(this.pnlOpcoes);
this.Name = "frmSimulacaoMapaGPS"; this.Name = "frmSimulacaoMapaGPS";
this.Text = "frmSimulacaoMapaGPS"; this.Text = "frmSimulacaoMapaGPS";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmSimulacaoMapaGPS_FormClosing);
this.Load += new System.EventHandler(this.frmSimulacaoMapaGPS_Load); this.Load += new System.EventHandler(this.frmSimulacaoMapaGPS_Load);
this.pnlOpcoes.ResumeLayout(false); this.pnlOpcoes.ResumeLayout(false);
this.pnlOpcoes.PerformLayout(); this.pnlOpcoes.PerformLayout();

View File

@ -71,6 +71,11 @@ namespace AgroBase.Forms
Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal = new SonarModel(picSonar); Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal = new SonarModel(picSonar);
} }
private void frmSimulacaoMapaGPS_FormClosing(object sender, FormClosingEventArgs e)
{
tmrSonar.Stop();
}
private void btnCarregar_Click(object sender, EventArgs e) private void btnCarregar_Click(object sender, EventArgs e)
{ {
Variaveis.OperacaoEmAndamento.Mapa.btnCarregar_Click((Control) sender, e); Variaveis.OperacaoEmAndamento.Mapa.btnCarregar_Click((Control) sender, e);
@ -285,5 +290,7 @@ namespace AgroBase.Forms
ObjetoDetectado = !ObjetoDetectado; ObjetoDetectado = !ObjetoDetectado;
btnAdicionarDeteccao.Text = ObjetoDetectado ? "Del" : "Add"; btnAdicionarDeteccao.Text = ObjetoDetectado ? "Del" : "Add";
} }
} }
} }

View File

@ -195,8 +195,6 @@ namespace AgroBase.Models
// Calcular os waypoints de desvio // Calcular os waypoints de desvio
var waypointsDesvio = CalcularWaypointsDesvio(posicaoAtual, obstaculo, indiceInicioDesvio); var waypointsDesvio = CalcularWaypointsDesvio(posicaoAtual, obstaculo, indiceInicioDesvio);
Console.WriteLine(obstaculo);
// Determinar o intervalo de waypoints a serem removidos // Determinar o intervalo de waypoints a serem removidos
int indiceFinalDesvio = EncontrarIndiceFinalDesvio(TrajetoriaDinamica, waypointsDesvio.Last(), ((double)obstaculo.DistanciaMedia / 100) + ((double)obstaculo.DeslocamentoNecessarioDesvio * 2 / 100)); int indiceFinalDesvio = EncontrarIndiceFinalDesvio(TrajetoriaDinamica, waypointsDesvio.Last(), ((double)obstaculo.DistanciaMedia / 100) + ((double)obstaculo.DeslocamentoNecessarioDesvio * 2 / 100));
int quantidadeWaypointsRemover = indiceFinalDesvio - indiceInicioDesvio; int quantidadeWaypointsRemover = indiceFinalDesvio - indiceInicioDesvio;

View File

@ -24,8 +24,7 @@ namespace AgroBase.Models.Modules
public static PinoutDataModel Pinout { get; set; } public static PinoutDataModel Pinout { get; set; }
public static List<FuncoesPinout> Funcoes { get; set; } = new List<FuncoesPinout>() public static List<FuncoesPinout> Funcoes { get; set; } = new List<FuncoesPinout>()
{ {
FuncoesPinout.SDA, FuncoesPinout.Geral,
FuncoesPinout.SCL
}; };
public List<DirSensoriamentoMotor> Motores { get; set; } public List<DirSensoriamentoMotor> Motores { get; set; }
@ -134,7 +133,8 @@ namespace AgroBase.Models.Modules
_TaxaAmostragem.ToString("00000") + ";" + // 5 ~ 9 _TaxaAmostragem.ToString("00000") + ";" + // 5 ~ 9
(AA_Ref000 ? "1" : "0") + ";" + // 11 (AA_Ref000 ? "1" : "0") + ";" + // 11
(AA_Ref090 ? "1" : "0") + ";" + // 13 (AA_Ref090 ? "1" : "0") + ";" + // 13
(AA_Ref270 ? "1" : "0"); // 15 (AA_Ref270 ? "1" : "0") + ";" + // 15
PinoutModel.PinoProtocolo(Pinout, Funcoes); // 17 ~ 18
Config.Add(ProtocoloMOD); Config.Add(ProtocoloMOD);
return Config; return Config;
} }

View File

@ -212,7 +212,7 @@ namespace AgroBase.Models.Operacoes
Controle.BicosAtuados = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores; Controle.BicosAtuados = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores;
} }
public void CalcularAnguloInclinacao() public void CalcularAnguloInclinacao(StatusCarroMapa statusCarroRua)
{ {
double erroOrientacao = 0.0; double erroOrientacao = 0.0;
double anguloCarro = ReferencialRuaGPS.AnguloCarro; double anguloCarro = ReferencialRuaGPS.AnguloCarro;
@ -236,8 +236,8 @@ namespace AgroBase.Models.Operacoes
double erroPosicaoLateral = anguloCamera; double erroPosicaoLateral = anguloCamera;
// Combina os erros. Ajuste os pesos conforme necessário para o seu caso específico. // Combina os erros. Ajuste os pesos conforme necessário para o seu caso específico.
double pesoOrientacao = 0.3; double pesoOrientacao = statusCarroRua == StatusCarroMapa.Direcionando ? 0.95 : 0.3;
double pesoPosicaoLateral = 0.7; double pesoPosicaoLateral = statusCarroRua == StatusCarroMapa.Direcionando ? 0.05 : 0.7;
double erroCombinado = (erroOrientacao * pesoOrientacao) + (erroPosicaoLateral * pesoPosicaoLateral); double erroCombinado = (erroOrientacao * pesoOrientacao) + (erroPosicaoLateral * pesoPosicaoLateral);
var statusAtual = ReferencialRuaGPS.StatusAtual; var statusAtual = ReferencialRuaGPS.StatusAtual;
@ -254,10 +254,10 @@ namespace AgroBase.Models.Operacoes
public void CalculaDadosMovimentacaoAutonoma() public void CalculaDadosMovimentacaoAutonoma()
{ {
CalcularAnguloInclinacao();
var statusAtual = ReferencialRuaGPS.StatusAtual; var statusAtual = ReferencialRuaGPS.StatusAtual;
CalcularAnguloInclinacao(statusAtual);
if (statusAtual == StatusCarroMapa.Parado) if (statusAtual == StatusCarroMapa.Parado)
{ {
var BicosNaoAtuados = new List<AtuadorBicoModel>(Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores); var BicosNaoAtuados = new List<AtuadorBicoModel>(Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores);
@ -268,7 +268,14 @@ namespace AgroBase.Models.Operacoes
} }
else if (statusAtual == StatusCarroMapa.Direcionando) else if (statusAtual == StatusCarroMapa.Direcionando)
{ {
Controle.RPM = Controle.RPM_Max; if (Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal.DesvioNecessario)
{
Controle.RPM = Controle.RPM_Min;
}
else
{
Controle.RPM = Controle.RPM_Max;
}
} }
else if (statusAtual == StatusCarroMapa.EntrandoRua) else if (statusAtual == StatusCarroMapa.EntrandoRua)
{ {
@ -300,7 +307,6 @@ namespace AgroBase.Models.Operacoes
Controle.RPM = 0; Controle.RPM = 0;
CalcularManobra(); CalcularManobra();
} }
} }
public void CalcularManobra() public void CalcularManobra()

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":7.087499508697463},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":16.642426432560772},{"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":0.06,"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":[1124810.37],"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":[0.06],"ValorMinimo":0.0,"ValorMaximo":127.63,"LimiteMaximo":120.0,"LimiteMinimo":60.0}],"PercentualInicioPulverizacao":0.3,"ScriptDeteccaoErvas":"green-detector.py","_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"_MassaLeitura":1124810.37,"MassaReservatorio":15.089199554657128,"VolumeReservatorio":14.370666242530598,"PercentualReservatorio":47.902220808435324,"VolumeVazaoAferido":102.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"_LeituraPulsos":0,"_LeituraPeriodo":0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":362.66307215324855,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"_LeituraPressao":857.0,"PressaoLinha":0.06,"PressaoLinhaCalc":26.71098437118437} {"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":"green-detector.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":4886.8707027305372,"_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

View File

@ -783,8 +783,6 @@ void ProcessarProtocolo(String Protocolo, F_Code _funcao) {
int prioridade = ((String)Protocolo[20] + (String)Protocolo[21]).toInt(); int prioridade = ((String)Protocolo[20] + (String)Protocolo[21]).toInt();
TiposBarramentos pinoB = (TiposBarramentos)((String)Protocolo[23]).toInt(); TiposBarramentos pinoB = (TiposBarramentos)((String)Protocolo[23]).toInt();
int pino = ((String)Protocolo[24] + (String)Protocolo[25]).toInt(); int pino = ((String)Protocolo[24] + (String)Protocolo[25]).toInt();
TiposBarramentos pino2B = (TiposBarramentos)((String)Protocolo[27]).toInt();
int pino2 = ((String)Protocolo[28] + (String)Protocolo[29]).toInt();
switch (componente) { switch (componente) {
case sFLX: { case sFLX: {
@ -806,6 +804,9 @@ void ProcessarProtocolo(String Protocolo, F_Code _funcao) {
case sMAS: { case sMAS: {
SensorMassa* _sensor = SMPorID(ID); SensorMassa* _sensor = SMPorID(ID);
if (sensor_ativado) { if (sensor_ativado) {
TiposBarramentos pino2B = (TiposBarramentos)((String)Protocolo[27]).toInt();
int pino2 = ((String)Protocolo[28] + (String)Protocolo[29]).toInt();
if (Conectar) { if (Conectar) {
_sensor->_pinoDT = PinoModel(pino, pinoB, _INPUT, DIGITAL); _sensor->_pinoDT = PinoModel(pino, pinoB, _INPUT, DIGITAL);
_sensor->_pinoSCK = PinoModel(pino2, pino2B, _INPUT, DIGITAL); _sensor->_pinoSCK = PinoModel(pino2, pino2B, _INPUT, DIGITAL);
@ -823,9 +824,9 @@ void ProcessarProtocolo(String Protocolo, F_Code _funcao) {
case sPRS: { case sPRS: {
SensorPressao* _sensor = SPPorID(ID); SensorPressao* _sensor = SPPorID(ID);
if (sensor_ativado) { if (sensor_ativado) {
double Vmin = ((String)Protocolo[31] + (String)Protocolo[32] + (String)Protocolo[33] + (String)Protocolo[34] + (String)Protocolo[35] + (String)Protocolo[36]).toDouble(); double Vmin = ((String)Protocolo[27] + (String)Protocolo[28] + (String)Protocolo[29] + (String)Protocolo[30] + (String)Protocolo[31] + (String)Protocolo[32]).toDouble();
double Vmax = ((String)Protocolo[38] + (String)Protocolo[39] + (String)Protocolo[40] + (String)Protocolo[41] + (String)Protocolo[42] + (String)Protocolo[43]).toDouble(); double Vmax = ((String)Protocolo[34] + (String)Protocolo[35] + (String)Protocolo[36] + (String)Protocolo[37] + (String)Protocolo[38] + (String)Protocolo[39]).toDouble();
double Pmax = ((String)Protocolo[45] + (String)Protocolo[46] + (String)Protocolo[47] + (String)Protocolo[48] + (String)Protocolo[49] + (String)Protocolo[50]).toDouble(); double Pmax = ((String)Protocolo[41] + (String)Protocolo[42] + (String)Protocolo[43] + (String)Protocolo[44] + (String)Protocolo[45] + (String)Protocolo[46]).toDouble();
if (Conectar) { if (Conectar) {
_sensor->_Vmin = Vmin; _sensor->_Vmin = Vmin;
_sensor->_Vmax = Vmax; _sensor->_Vmax = Vmax;

View File

@ -24,7 +24,7 @@ double _Margem = 0.5;
int dutyCycle = 512; int dutyCycle = 512;
double _frequencia = 4000; double _frequencia = 4000;
PinoModel _pinoGeral;
class Motor { class Motor {
public: public:
@ -463,7 +463,7 @@ Motor* MotorPorID(String ID) {
void setup() { void setup() {
Serial.begin(_baudRate); Serial.begin(_baudRate);
iniciarMCP(D_Code, 8, 18, 0x20, false); //iniciarMCP(D_Code, 8, 18, 0x20, false);
} }
void loop() { void loop() {
@ -490,6 +490,13 @@ void ProcessarProtocolo(String Protocolo, F_Code _funcao) {
AA_Ref000 = (String)Protocolo[11] == "1"; AA_Ref000 = (String)Protocolo[11] == "1";
AA_Ref090 = (String)Protocolo[13] == "1"; AA_Ref090 = (String)Protocolo[13] == "1";
AA_Ref270 = (String)Protocolo[15] == "1"; AA_Ref270 = (String)Protocolo[15] == "1";
TiposBarramentos _barramento = (TiposBarramentos)((String)Protocolo[17]).toInt();
int _num = ((String)Protocolo[18] + (String)Protocolo[19]).toInt();
_pinoGeral = PinoModel(_num, _barramento, _OUTPUT);
if (_pinoGeral.Definido()) {
_pinoGeral.set(true);
}
vTaskDelay(pdMS_TO_TICKS(100)); vTaskDelay(pdMS_TO_TICKS(100));