muovere un servo e accendere in dissolvenza dei led contemporaneamente

Buon giorno a tutti,

sono nuovo sia del forum che di Arduino ed ho un piccolo progettino in testa per realizzare un cielo stellato in dissolvenza ed una stella cadente che scende per il presepe del prossimo Natale.
Sono riuscito a scrivere entrambe le istruzioni che funzionano regolarmente. Ho bisogno, però, di farle svolgere in tempi sovrapposti (le luci si accendono, parte la stella, si ferma la stella le luci si spengono, etc.).
Ho letto in altri post, della funzione millid, ma non ho minimamente capito come si usa, potete aiutarmi cortesemente?
Vi allego di seguito lo sketch:

#include <Servo.h>
Servo myservo;
int velocitaServo = 80;

const int LEDPin1 = 11;

int LED1Value = 0;

int velocita = 117;

void setup() {

myservo.attach(9);
myservo.writeMicroseconds(0);

pinMode(LEDPin1, OUTPUT);

}

void loop() {

for (int n=0; n<255; n++)
{
analogWrite(LEDPin1, n);
delay(velocita);
}
delay(3000);
for (int n=255; n>0; n--)
{
analogWrite(LEDPin1, n);
delay(velocita);
}
analogWrite(LEDPin1, LED1Value);

for (int n=0; n<179; n++)
{
myservo.write(n);
delay(velocitaServo);
}
delay(300);
for (int n=179; n>0; n--)
{
myservo.write(n);
delay(velocitaServo);
}

delay(3000);
}

Scusatemi se nel post ho dimenticato qualche accortezza del regolamento.
grazie,
Gabriele

Buona sera,
prima di tutto, essendo il tuo primo post, nel rispetto del regolamento, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, edita (in basso a destra del post, bottone More -> Modify) il tuo post e racchiudi il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).

Grazie,

Guglielmo

Per capire come si usa la millis() devi studiare prima QUI, poi QUI ed infine leggi anche QUI e QUI ... vedrai che ti sarà tutto più chiaro.

Guglielmo

Guglielmo ti ringrazio tanto non ho ancora avuto modo di leggere i link che mi hai postato ma spero di farlo presto e capire cosa devo fare.

Gabriele

Caro Guglielmo, sono riuscito ad utilizzare millis al posto di delay come da te consigliato per farli lavorare contemporaneamente.
Ho ancora bisogno del tuo aiuto:
al termine della fase di accensione del LED ho bisogno che mi rimanga acceso per 30 secondi e viceversa al termine della fase di spegnimento
anche per il servo ho bisogno che rimanga fermo 60 secondi al termine della corsa.
ho provato in diversi modi ma proprio non ci riesco
per favore mi aiuti???
grazie Gabiele

      #include <Servo.h>
       Servo myservo;
       int velocitaServo = 50;
       int n = 0;

const int LEDPin1 = 11;
int LED1Value = 0;
int fade = 1;
int fade2 = 1;
int velocita = 20;


unsigned long currentTime; 
unsigned long loopTime; 
unsigned long currentTime2; 
unsigned long loopTime2; 

void setup() {

 
  pinMode(LEDPin1, OUTPUT);
  currentTime = millis();
  loopTime = currentTime;
    currentTime2 = millis();
  loopTime2 = currentTime2;

    myservo.attach(9);
  myservo.writeMicroseconds(0);
}

void loop() {
  
  currentTime = millis();
  if (currentTime >= (loopTime + velocita)) {
   analogWrite(LEDPin1, LED1Value);

   LED1Value = LED1Value + fade;

   if (LED1Value == 0 || LED1Value == 255) {
    
    fade = -fade;
   }
   loopTime = currentTime;
  }

 
 
 currentTime2 = millis();
  if (currentTime2 >= (loopTime2 + velocitaServo)) {
   myservo.write(n);

   n = n + fade2;

   if (n == 0 || n == 179) {

    fade2 = -fade2;
   }
   loopTime2 = currentTime2;
  }

}