Salve, volevo provare a chiedere a questo forum perché vedo che molta gente trova le risposte alle proprie domande e ne avrei qualcuna anche io. sto cercando di creare un codice che permette l'accensione e lo spegnimento di 3 led e di una striscia led in dissolvenza. il punto è che per questo codice ho voluto utilizzare un tempo calcolato da arduino utilizzando la funzione millis(), ma unendo le due parti mi dava diversi problemi e ho cercato online se si potessero creare una sottospecie di 2 void loop per eseguire da una parte il tempo che scorre e visualizzarlo sul monitor seriale mentre l'altro eseguiva la parte di codice in cui accende e spegne i vari led e striscia led. sto riscontrando vari problemi perché mi fa partire il conteggio del tempo ma nessun led si accende o spegne e non viene tenuto minimamente conto il conteggio del tempo. se potete aiutarmi vi ringrazio immensamente e vi allego il codice che ho creato nel caso qualcuno notasse errori molto gravi che mi sono sfuggiti.
int led1 = 2;
int led2 = 3;
int led3 = 4;
#define RED_LED_PIN 11
#define GREEN_LED_PIN 10
#define BLUE_LED_PIN 9
const unsigned long duratanotte = 60000;
const unsigned long duratagiorno = 420000; //durata giorno 420.000 (7 min)
unsigned long tempoinizio = 0;
int valorefadeSL = 0;
int valorefadeL = 255;
unsigned long tempotrascorso = 0;
void setup() {
pinMode (led1, OUTPUT);
pinMode (led2, OUTPUT);
pinMode (led3, OUTPUT);
tempoinizio = millis(); //inizializzo il tempo (millis tiene conto del tempo da quando viene avviato il programma)
Serial.begin (9600);
Serial.print(tempoinizio);
delay(1000);
}
void loop() {
tempotrascorso = millis() - tempoinizio; // Calcolo del tempo trascorso
Serial.print("Tempo trascorso: ");
Serial.print(tempotrascorso);
Serial.println(" millisecondi");
delay(100);
}
void codiceprincipale(){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
if (tempotrascorso < 60000){
for (valorefadeSL = 0 ; valorefadeSL < 255; valorefadeSL++){
analogWrite (11, valorefadeSL);
delay(100);
analogWrite (10, valorefadeSL);
delay(100);
analogWrite (9, valorefadeSL);
delay(100);
}
for (valorefadeL = 255 ; valorefadeL > 0; valorefadeL--){
analogWrite (2, valorefadeL);
delay(100);
analogWrite (3, valorefadeL);
delay(100);
analogWrite (4, valorefadeL);
delay(100);
}
}
if (tempotrascorso > 60000){
for(valorefadeSL = 255 ; valorefadeSL > 0; valorefadeSL--){
analogWrite (11, valorefadeSL);
delay(100);
analogWrite (10, valorefadeSL);
delay(100);
analogWrite (9, valorefadeSL);
delay(100);
}
for (valorefadeL = 0 ; valorefadeL < 255; valorefadeL++){
analogWrite (2, valorefadeL);
delay(100);
analogWrite (3, valorefadeL);
delay(100);
analogWrite (4, valorefadeL);
delay(100);
}
}
tempoinizio = millis();
}