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
Tags:
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:
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.
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
.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por