O condicional if … else
Como já dissemos, o Arduino irá executar as instruções que estiverem no programa uma por uma até o final. Estando dentro do loop e chegando ao final, ele retornará ao início do loop pra reiniciar tudo novamente. Em muitos casos, podemos querer que algumas instruções apenas sejam executadas em certas condições. Ou então, podemos querer que uma determinada instrução não seja executada em outra condição. Ou ainda, podemos querer um programa com várias possibilidades na sequência de instruções, em lugar de uma só. Para tudo podemos usar o condicional if … else.
A instrução if representa uma tomada de decisão dentro do programa: se uma determinada condição for verdadeira, então uma certa instrução será executada. Se for falsa, uma outra instrução será executada em seu lugar. Vamos a um exemplo;

Neste programa, vamos usar a função millis() para fazer o LED piscar sem usar o delay. A montagem é a mesma feita anteriormente (veja aqui).
A função millis() nos dá o tempo em milissegundos em que o Arduino está funcionando, contanto a partir do momento em que o programa foi carregado.
Veja que na linha 3, criamos uma variável chamada tempo para guardar os valores de millis(). Ela é do tipo unsigned long, pois o tipo int não suportaria números tão grandes.
Na linha 13 aparece o if e, dentro dos parênteses, está a condição. Vamos explicá-la: toda vez que o Arduino chegar na linha 13, ele fará a subtração millis() – tempo. Se o resultado for menor do que 1000, então a condição é verdadeira. Neste caso, a linha 14 será executada e as linhas 15, 16, 17, 18 e 19 serão ignoradas.
Se a subtação for feita e o resultado não for menor do que 1000, então a linha 14 é ignorada e o else na linha 15 é acionado, executando as linhas 17 e 18.
Entendendo melhor…

Perceba que a função millis() é um contador que começa no 0 e vai aumentando com o tempo. A variável tempo foi definida inicialmente em zero. Assim, as primeiras subtrações serão menores que 1000. No entanto, conforme o tempo passa, a função millis() vai ficando cada vez maior, até um ponto em que o resultado alcança o valor 1000 e a linha 15 deixa de ser executada. Nesse ponto o else é acionado e sua primeira instrução (na linha 18) é inverter a variável estado através do operador lógico ! (como visto aqui). Inicialmente era zero e passará a ser um. Isto é importante para que o LED mude sua condição de apagado para aceso.
Uma segunda instrução é necessária: na linha 19, o valor que estava guardado na variável tempo é trocada pelo valor mais atual da função millis(). Isto faz com que a subtração volte para o zero e a linha 15 volte a ser executada, só que agora com um novo estado para o LED.
Veja então como o condicional if criou dois caminhos possíveis no programa: se o tempo for menor que 1 s (1000 milissegundos) então aplique o estado atual ao LED. Se não for menor, troque o estado, zere a contagem e comece novamente.

Deixe um comentário