Bonjour,
Je me suis lancé récemment dans des projet arduino. Pour mon premier projet je souhaite réaliser un panneau lumineux pour m'aider a me souvenir de sortir les poubelles :
Le Jeudi les led de la poubelles verte s'allume
Le lundi et vendredi les led de la poubelle noir s'allume. (pendant les 24h)
Dès que j'appuie sur un bouton poussoir je souhaite que les led s'éteigne car la poubelle est déja sortie, et ce jusqu'au jour suivant ou elle doit être allumé.
J'ai codé ceci, mais je pense qu'il y a un bug...
Des conseils?
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
int LedPoubelleNoir =4;
int LedPoubelleVerte=5;
int bouton =3;
long tempsRestantJourSuivant;
void setup () {
Serial.begin(57600); //Démarrage de la communication
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__));
}
pinMode(LedPoubelleNoir, OUTPUT);
pinMode(LedPoubelleVerte, OUTPUT);
pinMode(bouton, INPUT_PULLUP);
digitalWrite(LedPoubelleNoir,0);
digitalWrite(LedPoubelleVerte,0);
}
void loop() {
digitalWrite(LedPoubelleNoir,0);
digitalWrite(LedPoubelleVerte,0);
DateTime now = RTC.now();
//Alarme se déclenchant le jeudi
if(now.dayOfTheWeek() == 4) {
//Day of week : 1 pour lundi, 2 pour mardi, ...
digitalWrite (LedPoubelleVerte,1);
boolean etatBouton;
etatBouton = digitalRead(bouton);
//test de l'état du bouton avec boolean etatBouton
if (etatBouton==0){
digitalWrite(LedPoubelleVerte,0);
tempsRestantJourSuivant=(86400L-now.unixtime());
delay(tempsRestantJourSuivant);
}
}
//alarme Pouvelle Noir Lundi ou Vendredi
if(now.dayOfTheWeek() == 1||5) {
//Day of week : 1 pour lundi, 2 pour mardi, ...
digitalWrite (LedPoubelleNoir,1);
boolean etatBouton;
etatBouton = digitalRead(bouton);
//test de l'état du bouton avec boolean etatBouton
if (etatBouton==0){
digitalWrite(LedPoubelleNoir,0);
tempsRestantJourSuivant=(86400L-now.unixtime());
delay(tempsRestantJourSuivant);
}
}
else {
digitalWrite(LedPoubelleNoir,0);
digitalWrite(LedPoubelleVerte,0);
}
delay(1000);
}