Boa noite pessoal, eu estou desenvolvendo um projeto onde eu vou usar um sensor LDR para mensurar a quantidade de horas de isolação real, ou sejam, media a quantidade de horas que o sol não permaneceu escondido por nuvens, gerando assim o máximo de radiação. O problema é que preciso de uma função millis () associada a uma função if ().
Essa associação seria do tipo:

If( lux < 800) {
tempo = 0
}
else }
contador
}

O problema é o contador, não consigo elaborar. Alguém poderia me ajuda?

Exibições: 477

Responder esta

Respostas a este tópico

Bom dia JFS,

veja se este sketch te ajuda.

RV

https://pastebin.com/1W7uCbCf

Bom dia RV, muito obrigado, ajudou bastante. 
O contador é simples e eficiente, só preciso agora adequar o intervalo dele, coisa que ainda é um problema, pois tenho que fazer ele contar as horas com sol, excluindo os momentos que o mesmo permanece encoberto pelas nuvens.

Bom dia, JFS, o loop mais enxuto pode ser assim

https://pastebin.com/PA7874kP

Boa tarde, a função Millis () funciona bem com Delay ()?

Sim. Não conflitam.

millis() é para retornar o tempo passado desde o início da execução do programa: https://www.arduino.cc/en/Reference/Millis

delay() é para parar o programa por um tempo: https://www.arduino.cc/en/Reference/Delay

eu tenho de montar o sistema de modo que a cada 1 minuto ele print no Monitor Serial os Lux medidos e o tempo acumulado, mas somente a cada 1 minutos

Pra enviar o tempo em "sol" acumulado a cada 1 minuto, pode fazer como em https://pastebin.com/qjdTT6xa

Pra enviar os Lux medidos, fica um pouco mais complicado porque tem que salvar os valores em um array. Talvez dê pra eu postar essa versão com Lux medidos mais tarde.

A versão pra imprimir os Luxs medidos fica como em https://create.arduino.cc/editor/vitorafsr/cbcc380d-33b2-4460-8dd1-...

Nessa versão, coloquei que o tempo entre medidas de Lux é 1 segundo, para diminuir a quantidade de medidas. Se fizesse a cada 100ms, seriam 600 medidas (no máximo), e ficaria complicado analisar no print serial.

Não consigo acessar, aparece apenas erro ao entrar... :/

Em sua função "sol", seria possível convertê-la para horas apenas pela divisão dela por um valor?

Entendi que esse post foi sobre a função loop() que postei em https://pastebin.com/PA7874kP

O valor da variável "sol" acumula tempo em milisegundos. Se quiser enviar em horas, é só dividir por 60*60*1000=3600000 antes de enviar.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço