Boas práticas para delays no Arduino?

Boa noite,

Sou novo no mundo Arduino e tenho uma dúvida que tem me incomodado.
Li que ao fim do void loop é importante colocar um delay para evitar de "saturar" o Arduino.

Tenho intenção de criar um programa para ficar executando 24h no Arduino.

Colocar delays curtos 100ms por exemplo podem desgastar ou saturar o Arduino em um prazo menor do que colocando um delay de 5000ms por exemplo?

Não importando a finalidade do programa, queria saber em termos gerais qual são as práticas recomendadas em relação a esse delay entre loops?

Obrigado!!

Quando coloca dúvidas como esta

hawkbraz:
(...)
Li que ao fim do void loop é importante colocar um delay para evitar de "saturar" o Arduino.
(...)

era boa ideia colocar também a fonte dessa informação.

Não me parece que isso seja verdade (e até poderá ter o efeito contrário). Possivelmente está a faltar informação nessa afirmação.

Está a faltar imensa informação a essa afirmação...

O que entendes por saturar, ou o que é que a outra pessoa deu como definição de saturação?

Um programa no Arduino por norma corre a função de setup e depois fica a correr de forma ciclica a função loop. Não importa quantas vezes a função loop correu, ela não vai correr mais depressa ou mais lenta, vai sempre correr normalmente até à última instrução de forma sequencial e depois volta ao inicio. Logo neste caso, não existe maneira de saturar seja o que for.

Agora, num programa normal, vais ter algo como interrupções (seja a enviar dados, ou a receber dados) ou de timers. E essas interrupções vão "perturbar" o tempo que demora a função loop a correr pois quando ocorre uma interrupção, a função loop pára para o processador executar a interrupção e volta onde estava e continua a seguir o código.

Neste caso, se o teu programa tiver imensas comunicações, é provável que o teu programa a correr na função loop demore mais a correr, mas não existe na mesma motivo para fazeres um delay no final do loop.
Outra coisa a ter em conta é que alguns delays desactivam as interrupções (para não interferir com a contagem do tempo) e nesse caso, o efeito é o oposto ao pretendido.

O que pode acontecer é que a lógica não precise de correr tão rápido quanto o processador corre. Aplicações para ler um botão numa porta digital precisam de ler essa porta digital na casa das centenas de ms em vez de 1ms ou menos. No entanto, nessas situações, o que se deve fazer é criar um laço com a função millis() de forma a deixar o processador a correr livremente e só quando necessário correr o pedaço de código necessário.

Logo, dito isto e como regra geral para iniciantes, a função delay serve para ser usada com intervalos até 50ms no máximo dos máximos. Qualquer coisa acima disso e é preferível usar outra estratégia de temporização (como o millis() ).

Lembrei-me agora da única situação que um Arduino sem um delay pode saturar algo...

void loop() {

Serial.println("Hello, World!!!");
}

Um programa com essa função loop e nenhum delay iria certamente saturar o computador que tivesse a porta série ligada a "ouvir" esse Arduino.

Muito obrigado pelos esclarecimentos!!!
Eu vi isso em um vídeo no YouTube que não estou encontrando mais.
Mas foi de enorme valia as informações que me forneceram!!!

Fizeste bem em ter vindo aqui esclarecer a dúvida. Sempre às ordens.

Muito obrigado pelas dicas e esclarecimentos!!