Ciao a tutti, io ho questo codice:
for( int i = 0 ; i < 255 ; i += 1 ){
analogWrite( G, 0 + i );
analogWrite( R, 255 - i );
delay(tempo);
}
for( int i = 0 ; i < 255 ; i += 1 ){
analogWrite( B, 0 + i );
analogWrite( G, 255 - i );
delay(tempo);
}
for( int i = 0 ; i < 255 ; i += 1 ){
analogWrite( R, 0 + i );
analogWrite( B, 255 - i );
delay(tempo);
}
che mi permette di effettuare un fade incrociato di un led rgb. Il mio problema è che devo sostituire il delay con un millis perchè non posso far fermare il programma. Nonostante ho provato ad inserire il millis mi vengono fuori risultati compleatmente differenti da quelli sperati. Ecco una delle tante prove (che però non va bene):
for( int i = 0 ; i < 255 ; i += 1 ){
zero = millis();
if(millis() - zero < tempo){
analogWrite( G, 0 + i );
analogWrite( R, 255 - i );
//delay(tempo);
}
else{
zero = millis();
}
}
for( int i = 0 ; i < 255 ; i += 1 ){
int zero1 = millis();
if(millis() - zero1 > tempo){
analogWrite( B, 0 + i );
analogWrite( G, 255 - i );
zero1 = millis();
//delay(tempo);
}
else{
zero1 = millis();
}
}
for( int i = 0 ; i < 255 ; i += 1 ){
int zero2 = millis();
if(millis() - zero2 > tempo){
analogWrite( R, 0 + i );
analogWrite( B, 255 - i );
zero2 = millis();
//delay(tempo);
}
else{
zero2 = millis();
}
}
Qualcuno può darmi una mano?
Grazie Leo