Boa tarde pessoal, estou inventando uma nova automação para minha casa, estou tratando de melhorar o desempenho geral do sistema.
Estava notando que tenho um delay de cerca de uns 5 segundos, entre por exemplo ativar o botão na tela touch e o arduino efetivamente realizar a ação solicitada pela tela, não é um problema pois quando se trata de realizar as ações programadas nos horários solicitados é instantâneo, seria apenas essa comunicação que demora um pouco a ser realizada, há alguma maneira de "acelerar" a velocidade de comunicação?
Talvez aumentando o BaundRate da serial? Atualmente esta em 9600, nem sei se o arduino suporta uma velocidade maior . . .
----------------------------------------------------------------------------------------------------------------------------
OBS: Estou usando um arduino Mega 2560 e uma tela Nextion 3.5Pol, NX4832T035_011
----------------------------------------------------------------------------------------------------------------------------
OBS 1: Não sei se pode ter alguma relação mas tenho 14 telas as quais acesso via IHM sem depender do Arduino para tal, normalmente o sistema fica na tela principal onde pode mostrar até 6 mensagens de alarme diferentes, além de data, hora e nível de um tanque que controlarei analogicamente, há outras 3 telas que também mostram uma analógica mas apenas quando estou nelas(penso eu). As demais telas tem apenas botões e caixas de texto para inserção de variáveis.
----------------------------------------------------------------------------------------------------------------------------
OBS 2: Praticamente eliminei todas as variáveis globais presentes, além de eliminar lógicas que não estavam mais em uso.
Tags:
Olá.
Coisas que deixam um programa lento:
1) delay();
2) Mandar pela serial informações que não serão utilizadas. Eu mesmo as vezes faço uns envios para efeito de debug, acaba a fase de debug e não tiro. Caso esses bytes lotem o buffer da serial (que é pequeno) o Arduino para até que o buffer esvazie, ficando a mercê da capacidade de transmissão.
3) o 2) com baudrate baixo.
Em comunicações dentro do aparelho (internas) o normal é usar o máximo que vc tiver disponível, por ex 115200bps.
Menos que 115200 só se vc tiver problemas de comunicação como um chicote que percorre ao longo de uma maquina/carro ou a comunicação seja bem pouca, como de um GPS (a cada 2s, as vezes 0,5s).
Enfim, tente 115200. Se ficar dando bugadas baixe um pouco, mas 9600 é mto pouco...
Olá, sobre o ponto 1 eu não costumo usar delay e nesse programa não tem essa função, sobre o ponto 2 penso ser o serial print, eu ate tinha alguns que tbm usava para testes mas já foram removidos, então sobra o ponto 3, vou experimentar e comendo os resultados, só preciso achar onde fica isso na biblioteca do nextion e no arduino, vou fazer umas pesquisas.
Boa noite,
9600 bps é uma velocidade muito baixa para comunicação serial. Mude para o maximo = 115200 bps.
Serial Port Baudrate | Standard | 2400 | 9600 | 115200 | bps |
Datasheet:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por