Salve ragazzi, allora il mio programma prevede il controllo di due led tramite un pulsante e in base al tempo trascorso. Ovvero alla pressione di un pulsante si deve accendere il primo led per 4 secondi, passato questo intervallo di tempo il led si deve spegnere e si deve accendere il secondo per 3 secondi, passato questo arco di tempo il led si deve spegnere e si deve riaccendere il primo per 4 secondi e cosi via. Spero di essermi fatto capire.
Vi allego lo sketch che ho provato a fare
int pul_pin = 2;
int Led_MA = 3;
int Led_MD = 4;
int Led_SX =11;
int Led_DX =12;
//definizione variabili
int bot = 0;
long diff = 0;
long diff2 = 0;
long time_start = 0;
long time_bot = 0;
long time_marcia = 4000;
long time_sterzata = 3000;
long t=0;
long debounce_delay = 200;
void setup()
{
pinMode(pul_pin, INPUT);
pinMode(Led_MA, OUTPUT);
pinMode(Led_MD, OUTPUT);
pinMode(Led_SX, OUTPUT);
pinMode(Led_DX, OUTPUT);
Serial.begin(9600);
digitalWrite(Led_MA, LOW);
digitalWrite(Led_MD, LOW );
digitalWrite(Led_SX, LOW );
digitalWrite(Led_DX, LOW );
}
void loop(){
time_start = millis();
if(digitalRead(pul_pin))
{
digitalWrite(Led_MA, HIGH);
digitalWrite(Led_MD, LOW );
digitalWrite(Led_SX, LOW );
digitalWrite(Led_DX, LOW );
time_bot = millis();
bot = 1;
}
diff = time_start - time_bot;
if(digitalRead(Led_MA) && diff > time_marcia)
{
digitalWrite(Led_MA, LOW) ;
digitalWrite(Led_MD, LOW );
digitalWrite(Led_SX, LOW );
digitalWrite(Led_DX, HIGH );
t = millis();
bot = 1;
}
diff2 = time_start - t;
if(diff2 > time_sterzata)
{
digitalWrite(Led_MA, HIGH );
digitalWrite(Led_MD, LOW );
digitalWrite(Led_SX, LOW );
digitalWrite(Led_DX, LOW );
}
Con questo sketch il primo led si accende per 4 secondi e poi spegne e si accende il secondo che però resta acceso anche passati i 3 secondi.
grazie mille in anticipo