Bonjour,
je pense ajouter une gestion des heures,pour cela j'ai opté pour un rtc ic2 1307,
tout se passe bien pour la lecture , sauf au niveau de ma variable "mois", il semble que cette variable ne marche pas, je voudrai le chiffre du mois en décimal.
En fait comment placer et écrire les données de date et d'heures dans des variables...
exemple : si avril alors retirer 180 secondes à l'ouverture
si mai alors retirer 360 secondes à l'ouverture....etc
comme cela la porte s'ouvre de plus en plus tôt.
j'ai mis des //****************** (pour ce qui concerne la variable "mois" )
Bonne soirée.
#include
#include
RTC_DS1307 RTC; //Classe RTC_DS1307
const char ledbleu = 2; // variable broche 2 (vraie), Une LED bleu pour détection crépuscule, s'il fait sombre
const char fermeture = 7; // variable pour broche 7 (vraie), pour fermer porte
const char capteur = 0; // broche A0 sur laquelle va être connecté le pont diviseur de tension
float tension = 0; // variable qui va enregistrer la tension lue en sortie du capteur
float seuilObscurite = 4.2; // valeur en V, seuil qui détermine le niveau auquel l'obscurité est présente
float seuilLumonisite = 4; // valeur en V, seuil qui détermine le niveau auquel la luminosité est présente
boolean PorteFermee = false; // statut de la porte ou démarre toujours le programme porte ouverte
int mois = 4; //********************************
void setup()
{
// définition des broches utilisées
pinMode(ledbleu, OUTPUT);
pinMode(fermeture, OUTPUT);
digitalWrite(ledbleu, HIGH);
digitalWrite(fermeture, HIGH);
Serial.begin(57600); // la voie série pour monitorer
Wire.begin(); //Démarrage de la librairie wire.h
RTC.begin(); //Démarrage de la librairie RTClib.h
//Si RTC ne fonctionne pas
if (! RTC.isrunning()) {
Serial.println("RTC ne fonctionne pas !");
//Met à l'heure à date à laquelle le sketch est compilé
RTC.adjust(DateTime(__DATE__, __TIME__));
//Cela fonctionne également :
//RTC.adjust(DateTime("Dec 5 2012","12:00:00"));
//RTC.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
void loop()
{
//Affichage de l'heure
DateTime now = RTC.now();
//Serial.print(now.day(), DEC);
//Serial.print('/');
Serial.println(now.month(), DEC);
mois == now.month(); //*******************
Serial.println(mois); //**********************
Serial.print('/');
Serial.print(now.year(), DEC);
Serial.println(' ');
//Serial.print(now.hour(), DEC);
//Serial.print(':');
//Serial.print(now.minute(), DEC);
//Serial.print(':');
// Serial.print(now.second(), DEC);
// Serial.println();
//delay(3000);
// conversion de cette valeur en tension
tension = (analogRead(capteur) * 5.0) / 1024;
if ((tension >= seuilObscurite) && !PorteFermee) //Pour FERMETURE
{
digitalWrite(ledbleu, LOW); // detection seuil obscurité On allume la LED bleu
delay(4000); // délai pour ne fermer porte que aprés 4 minutes ( 240 000) pour essais 4sec =4000
digitalWrite(fermeture, LOW); // On ferme la porte apres x secondes
digitalWrite(ledbleu, HIGH); // On éteint la LED bleu
PorteFermee = true;
Serial.print(" PorteFermee= ");
Serial.println(PorteFermee);
}
if ((tension < seuilLumonisite) && PorteFermee) //Pour OUVERTURE //*********************
{
if (mois == 4) //**********************
{
Serial.println('avril'); //**********************
delay(3);
}
delay(4000);//délai pour ouvrir la porte que aprés 4 minutes pour essais 4sec =4000
digitalWrite(fermeture, HIGH); // on ouvre la porte
PorteFermee = false;
Serial.print(" PorteFermee= ");
Serial.println(PorteFermee);
}
// délai pour ne prendre des mesures que toutes les 60-secondes (60 000) cela évite les ouvertures en cas d'orage
delay(500);// pour essais 1/2seconde=500
//Serial.println(PorteFermee);
}