Anteriormente coloquei que a principal mudança que eu queria fazer era retirar o delay do loop e fazer o controle de tempo com a função millis. Essa mudança é a base para adicionar novas funções ao código. Pois com o delay, se o intervalo de leitura fosse 10 minutos, teríamos 10 minutos sem o arduino fazer nada. Agora com o millis poderemos fazer coisas nesse intervalo, como trocar informações por meio de um botão.
Então meu uso do millis no loop é apenas para controlar o intervalo a cada gravação, então eu posso fazer uma conta simples para verificar se já passou X segundos da gravação anterior, quando passar o Arduino grava novamente.
Não faz muito sentido ir direto no nosso código no MEGA e sair testando, vai bagunçar tudo. Então vamos testar nossa função millis no UNO. Para tal podemos usar o próprio LED interno do aparelho e uma USB, para leitura da serial.
O código está configurado para o UNO, e para piscar o LED interno, tudo está bem comentado e de fácil configuração. Observe que no caso foi configurado que a ação vai ocorrer a cada cinco segundos, então no nosso código real, a gravação ocorreria a cada cinco segundos.
Enquanto o tempo limite para execução do código não chega, o Arduino fica rodando o loop, ignorando o código dentro do if, ou seja, detectará algum input, como a ação de um botão. Quando chega o limite o arduino roda o loop.
Observe que o utilizado o IF, que significa SE: Se o tempo foi alcançado faça...
Com While também funciona, mas segundo o referência do Arduino é para rodar um loop até ele se tornar falso, em nosso caso rodamos até ele se tornar verdadeiro, então por isso a escolha do IF.
Agora temos um código que em teoria funciona, vamos no próximo post passar ele para o nosso código real, se ele estiver funcionando já trago com as alterações no próximo post.
Nenhum comentário:
Postar um comentário