/**
 * Esempio 1: Lampeggio 3 LED - CODICE SEQUENZIALE
 * https://wokwi.com/projects/445614989333189633
 * 
 * Questo esempio usa delay() per temporizzare il lampeggio.
 * PROBLEMA: Il microcontrollore è bloccato durante i delay,
 * non può fare altro (polling sensori, rispondere a eventi, etc.)
 * 
 * Hardware:
 * - LED1 connesso al pin 8 (lampeggia ogni 1000ms)
 * - LED2 connesso al pin 9 (lampeggia ogni 500ms)
 * - LED3 connesso al pin 10 (lampeggia ogni 200ms)
 * - Resistenze da 220Ω in serie ad ogni LED
 */
// Pin dei LED
const int LED1_PIN = 8;
const int LED2_PIN = 9;
const int LED3_PIN = 10;
// Intervalli di lampeggio (millisecondi)
const int LED1_INTERVAL = 1000;
const int LED2_INTERVAL = 500;
const int LED3_INTERVAL = 200;
void setup() {
  // Inizializza i pin come output
  pinMode(LED1_PIN, OUTPUT);
  pinMode(LED2_PIN, OUTPUT);
  pinMode(LED3_PIN, OUTPUT);
  
  // Inizializza la comunicazione seriale per debug
  Serial.begin(9600);
  Serial.println("=== Esempio 1: LED Sequenziale ===");
  Serial.println("ATTENZIONE: Il codice è BLOCCANTE durante i delay!");
  Serial.println();
}
void loop() {
  // Lampeggio LED1 (1000ms)
  digitalWrite(LED1_PIN, HIGH);
  Serial.println("LED1 ON");
  delay(LED1_INTERVAL / 2);
  digitalWrite(LED1_PIN, LOW);
  Serial.println("LED1 OFF");
  delay(LED1_INTERVAL / 2);
  
  // Lampeggio LED2 (500ms)
  digitalWrite(LED2_PIN, HIGH);
  Serial.println("LED2 ON");
  delay(LED2_INTERVAL / 2);
  digitalWrite(LED2_PIN, LOW);
  Serial.println("LED2 OFF");
  delay(LED2_INTERVAL / 2);
  
  // Lampeggio LED3 (200ms)
  digitalWrite(LED3_PIN, HIGH);
  Serial.println("LED3 ON");
  delay(LED3_INTERVAL / 2);
  digitalWrite(LED3_PIN, LOW);
  Serial.println("LED3 OFF");
  delay(LED3_INTERVAL / 2);
  
  // PROBLEMA: Durante ogni delay(), il microcontrollore è BLOCCATO
  // Non può eseguire altre operazioni!
  // I LED non lampeggiano veramente in modo indipendente.
}
/**
 * SVANTAGGI APPROCCIO SEQUENZIALE:
 * 
 * 1. CPU BLOCCATA: Durante delay(), il microcontrollore non può fare altro
 * 2. NESSUN PARALLELISMO: I LED non lampeggiano contemporaneamente
 * 3. TIMING RIGIDO: Impossibile avere intervalli diversi simultanei
 * 4. NON REATTIVO: Non può rispondere a eventi esterni (pulsanti, sensori)
 * 5. SCALABILITÀ ZERO: Aggiungere più task blocca ulteriormente il sistema
 * 
 * QUANDO USARLO:
 * - Solo per sketch molto semplici
 * - Quando NON serve reattività
 * - Per prototipi veloci
 * 
 * OUTPUT SERIALE ATTESO:
 * LED1 ON
 * LED1 OFF
 * LED2 ON
 * LED2 OFF
 * LED3 ON
 * LED3 OFF
 * [ciclo ripete]
 */