Il faut mesurer le temps entre de début de l'allumage et la fin de l'allumage et cumuler les temps.
Ce qui donne par exemple:
int v = 13;
int l = 7;
void setup () {
pinMode(13, OUTPUT);
pinMode(7, INPUT);
}
void loop () {
static unsigned dureeAllumage=0;
static unsigned debutAllumage=millis();
static byte etatprec=LOW;
byte etat=digitalRead(7);
if (etat == HIGH) {
digitalWrite(13, HIGH);
}
if (etat == LOW) {
digitalWrite(13, LOW);
}
if (etat==HIGH && etatprec==LOW)
{
// on vient d'allumer la led
debutAllumage=millis();
}
else if (etat==LOW && etatprec==HIGH)
{
// on vient d'éteindre la led
dureeAllumage+=millis()-debutAllumage;
}
etatprec=etat;
}