Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • I Irrigador Automático para Hortas Comunitárias
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 1
    • Merge requests 1
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • NPDD
  • Irrigador Automático para Hortas Comunitárias
  • Issues
  • #1

Closed
Open
Created Aug 02, 2024 by unixjazz@unixjazzMaintainer

milis() e outros timers

O milis() funciona bem para aplicacoes que desligam a placa, mas nao funciona muito bem quando a placa fica ligado direto. O problem e' que ele reseta a cada 50 dias (mais ou menos) e faz com que o teu calculo na linha 95 e 98 se perca:

void loop(){
  tempoFinal = millis();

  if ((tempoFinal - tempoInicial) > INTERVALO_ENTRE_LEITURAS){
	  tempoInicial = millis();

Talvez seja melhor usar uma biblioteca para cuidar do tempo e ter formas mais precisas de calcular os intervalos de irrigacao (por examplo, todo dia as seis da tarde, se nao choveu... e se a umidade do solo nao estiver alta.)

Uma alternativa ao milis() seria a funcao delay(), mas ela tem problemas tambem. Ela nao nao garante precisao de tempo e pode acontecer de alguns segundos serem adicionados diariamente ao calculo do intervalo. Imagine a aplicacao rodando o mes todo (tu vais ter um desvio muito grande).

A melhor opcao mesmo e' de usar um timer com um RTC (relogio de tempo real): DS3231

Assignee
Assign to
Time tracking

Data Center Comunitário Livre - DCCL