Bom dia pessoal, estou usando um arduíno mega para uma aplicação e meu código está bem grande. Passa das 2000 linhas.
Percebi que o tempo de resposta dos botões de pulso do arduino aumentaram bastante sendo uns 2 segundos para começar a incrementar e 2 segundos para parar de incrementar, aproximadamente.
Penso que pode ter a ver com o tamanho do código, já queno clp lê o todo o código e volta ao começo para ler denovo sucessivamente.
Se for assim eu criando livrarias com partes do código reduzindo o código principal deixariam o arduíno rodando mais liso? Ou teria outro motivo?
Estou usando como periféricos um rtc e comunicação com meu PC para o software da tela nextion.
Tags:
Bom dia,
Você aperta o botão e depois de 2 segundos muda o estado?
Deve ter algum erro no programa.
Envie o programa e o diagrama da montagem.
Olá João Carlos!
Uma dúvida: Qual a função do RTC no seu projeto? Como vc está usando o Nextion, e ele tem o seu próprio processador, então é possível programar no Nextion alguns tipos de timers e outras coisas.
Por exemplo: Mudar um texto na tela do Nextion através de um botão pressionado na tela, Isso pode ser feito pelo próprio Nextion através de sua linguagem visual, o que iria poupar o Arduino e sua memória.
Outra coisa:
Esse comportamento errático pode ser problema de memória, embora você esteja usando o MEGA.
Usar bibliotecas não vai aliviar provavelmente, pois na linkedição, as bibliotecas vão ser incluídas.
Para economizar memória no Arduino, existem algumas recomendações.
- Quando puder, não use variáveis globais.
- Verifique os tipos de dados das variáveis e escolha os que ocupam menos bytes. Por exemplo, para representar um pino, use "byte" ao invés de "int". Prefira "const" nesse caso.
- Verifique os comandos em que você envia constantes de caracteres. Em alguns casos, Você pode usar a macro F() que economiza muitos bytes preciosos
- Está usando usando "Serial.print" para debugar? Esses são devoradores de memória. Nesse caso use a macro F() ou comente esses comandos
- Tente alocar variáveis de array na memória Flash, que é maior. Use o modificador PROGMEM para isso
Veja aqui um artigo que explica a organização da memória do Arduino e apresenta várias dicas de otimização.
Não sei sobre o projeto, mas, este problema pode está sendo causado pela forma como foi desenvolvido o código.
Eu costumo criar rotinas para implementar a leitura de botões e periféricos e chamo quando necessário no código principal.
Tente trabalhar criando rotinas e faça as chamadas dentro do loop apenas quando for necessário.
Tente otimizar o código, em 2k de linhas deve ter algo que possa ser otimizado.
A grande pergunta é o que o processador está fazendo que não responde o botão.
Possivelmente excesso de delay().
Um caminho seria vc colocar umas dicas pela serial do que ele está fazendo. Por ex:
Mande pela serial "S" no inicio de uma rotina de sensores, depois "s" ao final.
Mande "t" quando for ler o teclado, etc.
Assim vc tem uma ideia do que ele tem feito.
Reveja os dalays().
Mande seu codigo se quiser uma análise mais profunda. Sem ele só é possivel chutar.
Obrigado pessoal, estarei verificando otimização inicialmente caso não consiga o resultado esperado damos sequencia a analise.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por