Bonjour à tous,
J'ai un projet simple à réaliser mais je quelque chose ne se passe pas comme prévu. J'utilise une carte arduino uno, une horloge ds3231 et un module L298N pour distribuer l'énergie au vérin. J'ai programmé deux période dans l'année avec des horaires différents avec ce code.
J'ai programmé une date dans la période été mais le vérin n'a pas bougé aux horaires. J'ai essayé d'autres srtuctures en utilisatn des if, else if, else. Je ne sais plus comment traiter les problèmes. Vos idées seront les bienvenues.Code:#include <Wire.h> #include <ds3231.h> struct ts t; //déclaration variable t unsigned long secDepuisMinuit; void setup() { Wire.begin(); DS3231_init(DS3231_INTCN); t.hour=19; // données pour mettre à l'heure l'horloge t.min=20; t.sec=0; t.mday=24; t.mon=12; t.year=2023; DS3231_set(t); // mise à l'heure de l'horloge //ouvrir ou fermer la porte au demarrage digitalWrite(4, LOW); // le verin rentre digitalWrite(3, HIGH); delay(20000); digitalWrite(3, LOW); digitalWrite(4, LOW); delay(5000); digitalWrite(4, HIGH); // le verin sort digitalWrite(3, LOW); delay(20000); digitalWrite(4, LOW); digitalWrite(3, LOW); } void loop() { // put your main code here, to run repeatedly: DS3231_get(&t); secDepuisMinuit = t.hour * 3600ul + t.min * 60ul + t.sec; if ((t.mon >= 5) && (t.mon <= 9)){ if (secDepuisMinuit>=21600 && secDepuisMinuit<=21625) { //06h00 / ouvrir - le verin sort digitalWrite(4, HIGH); digitalWrite(3, LOW); delay(20000); digitalWrite(4, LOW); digitalWrite(3, LOW); } if (secDepuisMinuit>=75600 && secDepuisMinuit<=75625) { //21h00 / fermer - le verin rentre digitalWrite(4, LOW); digitalWrite(3, HIGH); delay(20000); digitalWrite(3, LOW); digitalWrite(4, LOW); } } else { if (secDepuisMinuit>=25200 && secDepuisMinuit<=25225) { //07h00 / ouvrir - le verin sort digitalWrite(4, HIGH); digitalWrite(3, LOW); delay(20000); digitalWrite(4, LOW); digitalWrite(3, LOW); } if (secDepuisMinuit>=68400 && secDepuisMinuit<=68425) { //19h00 / fermer - le verin rentre digitalWrite(4, LOW); digitalWrite(3, HIGH); delay(20000); digitalWrite(3, LOW); digitalWrite(4, LOW); } } }
-----