Bonjour aux bonnes volontés!
Pour remplacer un système de minuterie à 555, je voudrais utiliser un arduino nano.
Le but est d'avoir une durée d'allumage de plusieurs minutes et des temps d'attente de plusieurs heures..
pour ce faire j'ai le sketch suivant :
Le problème est que si c'est ok pour des petites valeurs de durée (ici 5 secondes) et attente (ici 32 secondes), le fonctionnement devient fantaisiste des que "Attente" vaut 33 secondes!
Il y a un dépassement de capacité d'une variable quelque part alors que j'ai tout passé les variables en unsigned long!
Qu'est ce qu'il ne vas pas?
Merci! pour votre attention!
#define PIN 4
unsigned long Duree = 5*1000;
unsigned long Attente= 32*1000;
unsigned long TempsFutur;
unsigned long TempsActuel;
void setup() {
Serial.begin(9600);
pinMode(PIN, OUTPUT);
}
void loop() {
TempsActuel = millis();
if (TempsActuel > TempsFutur) {
if (digitalRead(PIN)) {
digitalWrite(PIN, LOW);
TempsFutur = TempsActuel + Attente;
} else {
digitalWrite(PIN, HIGH);
TempsFutur = TempsActuel + Duree;
}
}
Serial.print(F("Valeur durée Allumée= "));
Serial.println(Duree); // valeur analogique lue;
//Serial.println(TempsActuel); // valeur analogique lue;
Serial.print(F("durée éteinte= "));
Serial.println(Attente); // valeur analogique lue;
//Serial.println(TempsFutur); // valeur analogique lue;
}