Fader led (controllare le pause)

Salve, eccomi a dare fastidio con le mie domande, ho cercato una risposta ma non sono riuscito a trovare niente
Ho bisogno di pause quando e al massimo della luminosità e quando e praticamente spento il led questo e dove sono arrivato nella compilazione del codice

int ledPin = 9;
int luminosita = 0;
int incremento = 1;
int attesa = 5;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  analogWrite(ledPin, luminosita);
  luminosita += incremento;
  if (luminosita < 0 || luminosita > 255) {
    incremento *= -1;
    luminosita += incremento;
  }
  delay(attesa);
}

@Gino1926 : In conformità al REGOLAMENTO, fosse anche per una sola riga, il codice va racchiuso negli appositi tag ... :roll_eyes:

... cortesemente, quindi, edita il tuo post più sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita :pencil2: che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice.

Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmd T su un Mac all'intero del IDE). Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà sistemato il codice come da regolamento, nessuno ti potrà rispondere, quindi ti consiglio di fare il tutto al più presto. :wink:

1 Like

Grazie per l'istruzione spero di aver fatto giusto

:+1: :+1: :+1:

Guglielmo

Il delay secondo me è posizionato male, se vuoi aspettare solo in fase tutto acceso/tutto spento devi metterlo dentro l'if.
Poi 5 ms di attesa valutarli a occhio nudo sono un po' pochini :slight_smile:

Si infatti era solo per un esempio, quel delay mi serve per la durata totale, adesso vorrei decidere anche il tempo tutto acceso e tutto spento

If(luminosità == 0 || luminosità == 255) delay(tempo_lungo);
else delay (attesa) ;

Ho scritto da cell controlla bene la sintassi.

Grazie per l'aiuto, sono un novellino di 50 anni, non so come inserire il codice che mi hai suggerito :flushed:

Devi sostituire il tuo "delay(attesa)" che aspetta sempre la stessa quantità di tempo con la riga che ti ha indicato nello791 che invece eseguue due tempi di attesa differenti in funzione delle due condizioni.

Guglielmo

Non credo di aver capito

int ledPin = 9;
int luminosita = 0;
int incremento = 1;
int attesa = 10;
int tempo_lungo = 30;

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  analogWrite(ledPin, luminosita);
  luminosita += incremento;
  if (luminosita < 0 || luminosita > 255) {

    incremento *= -1;
    luminosita += incremento;
  }
  if (luminosità == 0 || luminosità == 255) delay(tempo_lungo);
  else delay (attesa);

}

Pensi veramente di poter apprezzare ad occhio tempi di 10 o 30 millesimi di secondo ? ? ? :open_mouth:

Se vuoi vedere delle differenze, va bene 10msec. durante il fading, ma l'attesa alla fine ed all'inizio, per poterla apprezzare, la devi fare di almeno mezzo secondo, ovvero almeno 500 msec.

Guglielmo

Quella IF in pratica dice che se luminosità è uguale a 0 (tutto spento) oppure luminosità è a 255 (massimo valore) allora fa un attesa pari a "tempo_lungo", in tutti gli altri casi, quindi con la luminosità da 1 a 254, fa un'attesa di "attesa".

Guglielmo