// Definizione dei pin
const int ledPin1 = 2; // LED collegato al pin 2
const int ledPin2 = 3; // LED collegato al pin 3
// Variabili per gestire il tempo
unsigned long previousMillis = 0; // Memorizza l'ultimo tempo di aggiornamento
long interval; // Intervallo di tempo per il lampeggio
// Stato attuale dei LED
bool ledState1 = false; // Stato del LED 1
bool ledState2 = false; // Stato del LED 2
void setup() {
// Imposta i pin come OUTPUT
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
// Inizializza il generatore di numeri casuali
randomSeed(millis()); // Inizializza il seed del generatore con il tempo attuale
// Inizializza la comunicazione seriale
Serial.begin(9600); // Imposta la velocità di comunicazione a 9600 bps
Serial.println(millis());
// Imposta l'intervallo iniziale a un numero casuale tra 500 e 2000 millisecondi
interval = random(500, 2000);
}
void loop() {
unsigned long currentMillis = millis(); // Ottieni il tempo attuale
// Controlla se è passato l'intervallo di tempo
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis; // Aggiorna il tempo dell'ultimo lampeggio
// Cambia lo stato del LED 1 e LED 2
if (ledState1) {
spegniLed(ledPin1);
accendiLed(ledPin2);
} else {
accendiLed(ledPin1);
spegniLed(ledPin2);
}
// Inverti gli stati
ledState1 = !ledState1;
ledState2 = !ledState2;
// Stampa il valore di interval sulla seriale
Serial.print("Intervallo: ");
Serial.println(interval);
// Imposta un nuovo intervallo casuale
interval = random(500, 2000);
}
}
// Funzione per accendere un LED
void accendiLed(int pin) {
digitalWrite(pin, HIGH);
}
// Funzione per spegnere un LED
void spegniLed(int pin) {
digitalWrite(pin, LOW);
}