/* Este é um exemplo de uso da função millis() onde um led deve
acender por 500ms e ficar apagado por 100 ms.
A função millis() atua como um contador que atualiza automaticamente
o seu valor a cada 1 mili segundo a partir do início do funcionamento do
microcontrolador até que ele seja desligado ou o valor de millis()
alcance um valor maior do que o reservado para a variável.
A variável do tipo unsigned long armazenar valores
de 0 a 4,294,967,295 (2^32 - 1).
A variável tempo1 que será utilizada no código para "contar o tempo e "
mostrará o valor do millis.
A variável tempo2 do tipo int será utilizada para demosntrar que o tipo
int não deve ser utilizado para estes casos.
*/
unsigned long tempo1 = millis();
int tempo2 = millis();
unsigned int tempo3 = millis();
// Iniciação
void setup(){
// Inicia comunicação na porta serial
Serial.begin(9600);
// Define pinos dos led como saída
pinMode(8, OUTPUT);
}
void loop(){
/*
Se a diferença entre os valores de millis() - tempo1 for menor do que 500,
o LED acenderá.
*/
if((millis() - tempo1) < 500){
// Acende o led do pino 8
digitalWrite(8, HIGH);
//Serial.println("ACESO");
}
/*
Quando a diferença passa de 500, o if torna-se
falso e portanto o código "anda" e incia o else
que apaga o LED .
*/
else{
// Apaga o led do pino 8
digitalWrite(8, LOW);
// Serial.println("APAGADO");
}
/*
Este é o tempo que o LED ficará apagado por 100ms.
Para chegar no tempo 100ms somou-se 100ms (tempo apagado) com 500ms
que é o tempo que o LED permanece aceso.
Quando a diferença de millis menos tempo1 for maior
do que 600 (500 + 100) o if é verdadeiro.
Então faz a leitura atual do millis e guarda o novo valor em tempo1.
Esse novo valor vai ser utilizado lá no primeiro if
reiniciando todo o processo.
*/
if((millis() - tempo1) > 600){
tempo1 = millis();
tempo2 = millis();
tempo3 = millis();
}
/*
tempo1 mostra o valor do contador millis() porém em uma variável do tipo
unsigned long.
tempo2 mostra o valor do contador millis() porém em uma variável do tipo int
tempo3 mostra o valor do contador millis() porém em uma variável do tipo
unsigned int
*/
Serial.print ("Valor de millis = ");
Serial.println(millis());
Serial.print ("Valor tempo1 = ");
Serial.println(tempo1);
Serial.print("Valor tempo2 = ");
Serial.println(tempo2);
Serial.print("Valor tempo3 = ");
Serial.println(tempo3);
}