// Projeto envolvendo 3 LEDs utilziando a função milis()
#include <Arduino.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
const int ledFadeIn = 25; // LED para fade-in no pino 25
const int ledBlink = 33; // LED para blink no pino 33
const int ledOnOff = 32; // LED para ligar/desligar no pino 32
// Variáveis de controle
unsigned long previousMillisFade = 0; // Controle do tempo para fade
unsigned long previousMillisBlink = 0; // Controle do tempo para piscar
unsigned long previousMillisOnOff = 0; // Controle do tempo para ligar/desligar
int fadeValue = 0; // Valor atual do brilho (0-255)
int fadeDirection = 1; // Direção do fade (1 para aumentar, -1 para diminuir)
bool isLedOn = false; // Estado do LED de On/Off
void setup() {
pinMode(ledFadeIn, OUTPUT);
pinMode(ledBlink, OUTPUT);
pinMode(ledOnOff, OUTPUT);
}
void loop() {
unsigned long currentMillis = millis();
// Controle do Fade In/Out (20ms por passo)
if (currentMillis - previousMillisFade >= 20) {
previousMillisFade = currentMillis;
// Ajuste do brilho
fadeValue += fadeDirection * 5; // Incrementa/diminui o brilho em 5
if (fadeValue <= 0 || fadeValue >= 255) {
fadeDirection = -fadeDirection; // Inverte a direção
}
analogWrite(ledFadeIn, fadeValue);
}
// Controle do LED que pisca (1 segundo por ciclo)
if (currentMillis - previousMillisBlink >= 1000) {
previousMillisBlink = currentMillis;
// Alterna o estado do LED
digitalWrite(ledBlink, !digitalRead(ledBlink));
}
// Controle do LED On/Off (liga por 5 segundos a cada 10 segundos)
if (currentMillis - previousMillisOnOff >= 10000) {
previousMillisOnOff = currentMillis;
// Liga o LED por 5 segundos
isLedOn = true;
}
if (isLedOn && currentMillis - previousMillisOnOff >= 5000) {
digitalWrite(ledOnOff, LOW);
isLedOn = false; // Desliga o LED após 5 segundos
} else if (isLedOn) {
digitalWrite(ledOnOff, HIGH);
}
}