Bonjour à tous!
Voila je viens par ici quémander une solution à mon problème que je ne comprend pas :
je souhaite utilisé une fonction millis et pour éviter que l'overflow me foute le bazar je voudrais reset l’Arduino régulièrement.
jusque la tout me parait clair et je vois bien la procédure, sauf que dans la pratique, une fois un reset effectué j'ai l'impression que l'arduino reset en boucle et ne démarre donc jamais le programme.
J'ai suivi la première méthode de cet exemple : https://www.instructables.com/id/two-ways-to-reset-arduino-in-software/
j'ai pourtant bien mis en tout début de programme le pin 13 ( celui qui commande le reset) sur HIGH.
J'ai l'impression que malgré ça il démarre sur LOW et donc me fait reset en boucle.
Voici mon code :
int ouv = 2; //Ouverture sur pin 2
int ouv_gnd = 3; //Ouverture GND sur pin 3
int ferm = 9; //Fermeture sur pin 9
int ferm_gnd = 11; //Fermeture GND sur pin 11
int Pouv = 10; //Porte ouverte sur pin 10
int Pferm = 12; //Porte fermée sur pin 12
int Lum = 8; //Luminosité sur pin 8
int TEST1 = 0; //Porte ouverte sur pin RX
int TEST2 = 1; //Porte ouverte sur pin TX
int RESET = 13; //Porte ouverte sur pin 13
unsigned long Currenttime;
unsigned long Newtime;
void setup() {
digitalWrite(RESET, HIGH);
delay(200);
pinMode (ouv, OUTPUT);
pinMode (ouv_gnd, OUTPUT);
pinMode (ferm, OUTPUT);
pinMode (ferm_gnd, OUTPUT);
pinMode (Pouv, INPUT);
pinMode (Pferm, INPUT);
pinMode (Lum, INPUT);
pinMode (TEST1, OUTPUT);
pinMode (TEST2, OUTPUT);
pinMode (RESET, OUTPUT);
digitalWrite(ouv, LOW); //demarrage moteur non alimenté
digitalWrite(ouv_gnd, HIGH); //
digitalWrite(ferm, HIGH); //
digitalWrite(ferm_gnd, HIGH); //
Serial.begin(9600);
delay(10000);
}
void loop() {
if (digitalRead (Pouv) == HIGH && digitalRead (Lum) == LOW ) {
digitalWrite(ouv, LOW); //Ouverture porte
digitalWrite(ouv_gnd, LOW); //Ouverture porte
} else {
digitalWrite(ouv, HIGH); //Pas d'Ouverture porte
digitalWrite(ouv_gnd, HIGH); //Pas d'Ouverture porte
}
if (digitalRead (Pferm) == HIGH && digitalRead (Lum) == HIGH ) {
digitalWrite(ferm, LOW); //Fermeture porte
digitalWrite(ferm_gnd, LOW); //Fermeture porte
} else {
digitalWrite(ferm, HIGH); //pas de Fermeture porte
digitalWrite(ferm_gnd, HIGH); //pas de Fermeture porte
}
Currenttime = millis();
if (Currenttime >= 14000 ) {
digitalWrite(RESET, LOW);
}
// while (digitalRead (Pouv) == HIGH) {
// Serial.print(123456);
//digitalWrite(ferm, LOW); //Fermeture porte
//digitalWrite(ferm_gnd, LOW); //Fermeture porte
}