docdoc:
Non so se ho capito bene, ma comunque sia la risposta alla prima e alla terza domanda è "si"
, per la seconda è invece chiaro che NON devi usare i delay ma la funzione millis().
mi sembrava impossibile infatti 
docdoc:
Ora, se tu stai cercando di "unire" più programmini trovato in rete, la cosa diventa un poco più cdifficile se non hai una certa pratica di programmazione, per cui il mio suggerimento è quello di iniziare da un prototipo "semplice" (come il tuo schema "fuocodissolvenza") dove un LED rappresenta le lampadine per giorno e notte, e gli altri led sono per simulare l'effetto fuoco
no no scusa. Forse ho scritto troppo di fretta. Non sono a secco di programmazione, sono un ex programmatore, ora molto più SQL, ma non a secco di C per esempio. Comunque il tuo suggerimento è ottimo tant'è vero che è quello che pensavo anche io. Comunque ho fatto qualche modifica, ho preso qualcosa in rete solo per capire come fanno gli altri ed abbassare i tempi di apprendimento. Ora va meglio, mooooolto meglio grazie alla tua semplice ma per me vitale dritta del Millis
[/quote]
docdoc:
(per questo vedi qualche spunto QUI, era un mio progettino per il presepe...
). A quel punto se la cosa ti soddisfa, puoi passare alle lampadine e relativo driver 12V. Se invece hai qualche problema o difficiltà posta qui il tuo codice e vediamo di darti una mano.
questa versione sembra andare benino
// Example Fading LED with analogWrite and millis()
// See baldengineer.com/fading-led-analogwrite-millis-example.html for more information
// Created by James Lewis
const byte lamp1 = 5;
const byte lamp2 = 3;
int Giallo_1 = 11;
int Rosso = 10;
int Giallo_2 = 9;
// define directions for LED fade
#define UP 0
#define DOWN 1
// constants for min and max PWM
const int minPWM = 0;
const int maxPWM = 255;
// State Variable for Fade Direction
byte fadeDirection = UP;
// Global Fade Value
// but be bigger than byte and signed, for rollover
int fadeValue = 0;
// How smooth to fade?
byte fadeIncrement = 5;
// millis() timing Variable, just for fading
unsigned long previousFadeMillis;
unsigned long prevFireMillis;
void setup() {
// put pwmLED into known state (off)
analogWrite(lamp1, fadeValue);
}
void doTheFade(unsigned long thisMillis,int lamp,int fade_lamp) {
// is it time to update yet?
// if not, nothing happens
if (thisMillis - previousFadeMillis >= fade_lamp) {
// yup, it's time!
if (fadeDirection == UP) {
fadeValue = fadeValue + fadeIncrement;
if (fadeValue >= maxPWM) {
// At max, limit and change direction
fadeValue = maxPWM;
fadeDirection = DOWN;
}
} else {
//if we aren't going up, we're going down
fadeValue = fadeValue - fadeIncrement;
if (fadeValue <= minPWM) {
// At min, limit and change direction
fadeValue = minPWM;
fadeDirection = UP;
}
}
// Only need to update when it changes
analogWrite(lamp, fadeValue);
// reset millis for the next iteration (fade timer only)
previousFadeMillis = thisMillis;
}
}
void fire() {
analogWrite(Giallo_1, random(120)+135);
analogWrite(Rosso, random(120)+135);
analogWrite(Giallo_2, random(120)+135);
delay(random(100));
}
void loop() {
// get the current time, for this time around loop
// all millis() timer checks will use this time stamp
unsigned long currentMillis = millis();
doTheFade(currentMillis,lamp1,50);
doTheFade(currentMillis,lamp2,10);
fire();
}
però ho provato a mettere il Millis() nel fuoco e, come ha detto manolomao diventa un casino. Visto la tua disponibilità, che ne dici? Può andare e lascio? A quel punto posso inserire le lampadine. Ieri ho provato, oltre che teoricamente come provo per praticità su tinkercard, direttamente con i pezzi e devo dire che solo fuoco o solo dissolvenze con le lampadine venivano proprio carine. Stasera provo questa.
Comunque sia a parte tutto quello che ho scritto, di base il riassunto è
GRAZIE tantissimo per tutto,
ciao
Emanuele