Con 50 ms il programma non funziona cioè il led non si accende bene con la pressione del pulsante.
Ho eseguito il programma con una accensione temporizzata e una accensione a relè passo-passo senza l' uso di delay funziona tutto bene.
const int Pulsantepin1 = 2;
const int Pulsantepin2 = 3;
const int Utilizzatorepin1 = 4;
const int Utilizzatorepin2 = 5;
unsigned long previousMillis1 = 0; //Variabile globale Precedente millis
unsigned long interva1 = 10000; // Variabile globale intervallo posto a mezzo secondo
unsigned long previousMillis2 = 0; //Variabile globale Precedente millis
unsigned long interva2 = 200;
unsigned int counter = 0;
int Statopulsante1;
int Statopulsante2;
int Statoutilizzatore1;
int Statoutilizzatore2;
void setup ()
{
Serial.begin(9600);
pinMode (Pulsantepin1, INPUT);
pinMode (Pulsantepin2, INPUT);
pinMode (Utilizzatorepin1, OUTPUT);
pinMode (Utilizzatorepin2, OUTPUT);
}
void loop ()
{
unsigned long currentMillis = millis ();
Statopulsante1 = digitalRead (Pulsantepin1);
Statopulsante2 = digitalRead (Pulsantepin2);
Statoutilizzatore1 = digitalRead (Utilizzatorepin1);
Statoutilizzatore2 = digitalRead (Utilizzatorepin2);
// ACCENSIONE 1 TEMPORIZZATA
if (Statopulsante1==HIGH)
{
Statoutilizzatore1=HIGH;
digitalWrite (Utilizzatorepin1, Statoutilizzatore1);
}
else if (Statopulsante1==LOW)
{
if (currentMillis - previousMillis1 > interva1)
{
previousMillis1 = currentMillis;
Statoutilizzatore1=LOW;
digitalWrite (Utilizzatorepin1, Statoutilizzatore1);
}
}
// ACCENSIONE 2
if (Statopulsante2==HIGH)
if (Statoutilizzatore2==HIGH)
{
if (currentMillis - previousMillis2 > interva2)
{
previousMillis2 = currentMillis;
Statoutilizzatore2=LOW;
digitalWrite (Utilizzatorepin2, Statoutilizzatore2);
}
}
else
{
if (currentMillis - previousMillis2 > interva2)
{
previousMillis2 = currentMillis;
Statoutilizzatore2=HIGH;
digitalWrite (Utilizzatorepin2, Statoutilizzatore2);
}
}
}
Se avete consigli e suggerimenti sul programma sono tutto orecchie.