#include <Arduino.h>

class Led1 {
private:
  int pin;
  int luminosita;

public:
  Led(int p) {
    pin = p;
    pinMode(pin, OUTPUT);
    luminosita = 0;
  }

  void accendi() {
    analogWrite(pin, luminosita);
  }

  void fadein() {
    for (int i = 0; i <= 255; ++i) {
      luminosita = i;
      accendi();
      delay(12);  // 3000ms / 255 steps ≈ 11.76, rounded up to 12
    }
  }
};

class Led {
private:
  int pin;
  int luminosita;

public:
  Led(int p) {
    pin = p;
    pinMode(pin, OUTPUT);
    luminosita = 0;
  }

  void accendi() {
    if (luminosita > 0) {
      digitalWrite(pin, HIGH);
    } else {
      digitalWrite(pin, LOW);
    }
  }

  void fadein() {
    const int fadeSteps = 255;
    const int fadeDuration = 10000;
    const int delayBetweenSteps = fadeDuration / fadeSteps;

    for (int i = 0; i <= fadeSteps; ++i) {
      luminosita = i;
      accendi();
      delay(delayBetweenSteps);
    }
  }
};

Led1 mioLed(4);  // Sostituisci con il tuo pin LED

void setup() {
  // Nessuna inizializzazione necessaria per questo esempio
}

void loop() {
  mioLed.fadein();
  delay(3000);  // Aggiungi una pausa di 1 secondo tra i fade-in
}