#include <TimerOne.h>
void setup() {
pinMode(9, OUTPUT); // Configura o pino 9 como saída para o LED 9
pinMode(8, OUTPUT); // Configura o pino 8 como saída para o LED 8
pinMode(7, OUTPUT); // Configura o pino 7 como saída para o LED 7
Timer1.initialize(1000); // Configura o temporizador para 1 segundo (1000 milissegundos)
Timer1.attachInterrupt(callback); // Associa a função "callback" ao temporizador
}
void callback() {
static unsigned long previousMillis9 = 0;
static unsigned long previousMillis8 = 0;
static unsigned long previousMillis7 = 0;
unsigned long currentMillis = millis();
// Pisca o LED 9 a cada 1 segundo
if (currentMillis - previousMillis9 >= 2000) {
digitalWrite(9, !digitalRead(9)); // Inverte o estado do LED 9 (liga/desliga)
previousMillis9 = currentMillis; // Atualizar o tempo anterior --> LED 9
}
// Pisca o LED 8 a cada 5 segundos
if (currentMillis - previousMillis8 >= 10000) {
digitalWrite(8, !digitalRead(8)); // Inverte o estado do LED 8 (liga/desliga)
previousMillis8 = currentMillis; // Atualizar o tempo anterior --> LED 8
}
// Pisca o LED 7 a cada 10 segundos
if (currentMillis - previousMillis7 >= 20000) {
digitalWrite(7, !digitalRead(7)); // Inverte o estado do LED 7 (liga/desliga)
previousMillis7 = currentMillis; // Atualizar o tempo anterior --> LED 7
}
}
//O termos previousMillis são variáveis usadas para conferir o tempo
//decorrido desde a última vez que cada LED piscou.
//Elas tem uma função muito importante pois fazem conm que os Leds pisquen em momentos especificos
//em momentos específicos.
void loop() {
// O loop vazio aqui permite que o programa continue rodando
}
//Faz com que o valor da variável é
//preservado entre as chamadas da função, em vez de ser recriado toda vez que a
//função é chamada.