Delay na exibição da hora no display com sensor de temperatura

Boa noite galera,

Sou noob com Arduino porém tenho um certo conhecimento de eletrônica o que ajuda um pouco, estou montando um Arduino para automatizar algumas funções do meu aquário e estou tendo problemas na exibição da Temperatura e data e hora, pois quando coloco para exibir a temperatura no display a exibição do relógio fica com um delay de 2 segundos.

Outra dúvida que tenho é com o dimmer, em quanto está no loop do dimmer ele para de processar o restante inclusive o relógio, não sei como incluir a função para que execute em paralelo com as demais.

#define FADESPEED 200

int r;

if(HoraAtual >= schedule1 && HoraAtual < endSchedule1){
        for (r = 0; r < 255; r++) { 
          analogWrite(ledWhite, r);
          delay(FADESPEED);

    }
}

Funções que quero neste projeto:

Controle de Temperatura aquecimento e resfriamento

Controle de 2 bombas de circulação com Relê com agendamento

Dimmer para LEDs diurno e noturno

e futuramente:

interface web

monitoramento de PH

segue em anexo o controleAquario.ino

Projeto: controleAquario.ino

https://pastebin.com/G0mVDr9s

Exibições: 435

Anexos

Responder esta

Respostas a este tópico

Olá Rodrigo!

Parabéns pelo projeto. Está ficando bom. Existem várias formas de resolver, mas nem todas são simples.

Seguem algumas sugestões

- Para o caso de exibir a hora, tente retirar o delay(1000) da rotina do loop para ver o que acontece.

- Para o caso do dimmer, é um pouco mais difícil, pois o Arduino não suporta Threads. Dá pra simular com interrupções apenas.

Vc declarou a lib Threads, mas não usou.

É possível também fazer algumas gambis para simular o processamento paralelo, como:

- Colocar alguns exibições do lcd dentro do for;

- Usar WHILE e flags em vez do FOR

- Usar interrupções

Veja que algumas medidas não precisam ser calculadas a cada segundo, como a temperatura, por exemplo.

A exibição da temperatura poderia estar em uma interrupção e executada a cada 2 ou 3 minutos ou mais para não atrapalhar o relógio.

O próprio relógio, você necessita precisão de segundos?

Veja aqui um lib para threads bem interessante:

https://github.com/ivanseidel/ArduinoThread

Opa José, tudo bem, 

Já agradecendo sua dica, fiz algumas alterações aqui mas ainda não testei pois estou no trabalho, a noite eu testo certinho. 

Criei as Threads e vamos ver o que dá.. rsrsrs

Em anexo o arquivo com as alterações que efetuei. Se puder e tiver um tempinho dar uma olhada pra mim.

Anexos

Rodrigo, bom dia!

Pensando no seu projeto, elaborei um tutorial onde uso uma biblioteca de controle de tempo que você pode adaptar para leitura de sensores.

Dentro do loop estou realizando uma contagem que não interrompe o processamento. Essa contagem você poderia adaptar para o caso dimmer.

Veja se te ajuda:

http://josecintra.com/blog/arduino-controlando-intervalos-tempo/

Parabéns José Augusto! Excelentes tutoriais !

Obrigado Murta!

Boa tarde JAC.

Vi lá seu tutorial. Ficou muito legal.

Não conhecia esta biblioteca. Foi você que a desenvolveu?

As vezes que precisei usar um recurso assim usei uma outra biblioteca,

 a  elapsedMillis.h.

https://playground.arduino.cc/Code/ElapsedMillis

Que tal você acrescentar esta no seu tutorial?

Abraços e parabéns.

Rui

Olá Rui, Obrigado!

Não fui eu que escrevi essa lib. Encontrei no GitHub.

A ElapsedMillis eu não conhecia. Já acrescentei no tutorial na parte de outras alternativas. Veja se escrevi o seu nome corretamente. Indiquei a página do labdegaragem, mas se tiver outra que queira linkar, me fale.

Abraço

 

.

Meu muito show.. irei testar e reporto o resultado aqui... Parabéns pela página...
Agora estou montando um monitoramento web.. hahaha não para mais.. e já está vindo um sensor de PH..

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço