Dans le cadre d'un projet je veux faire un réveil avec un simulateur d'aube
J'ai déjà programmé l'horloge avec un real time oclock qui est le ZS-042 DS3231 et il fonctionne correctement seul puis j'ai programmé le simulateur d'aube séparément et il fonctionne bien aussi et donc j'ai voulu les coupler j'ai fais juste une simple ligne avec la commande if et les horaires du réveil
Quand l'horloge atteint les horaires du réveil, le simulateur d'aube s'enclenche mais pendant ce temps l'afficheur ne continu plus d'afficher l'heure, elle reste figée au horaires du réveil
#include <Wire.h>
#include <ds3231.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
struct ts t;
int rh=8;
int rm=20;
int led = 9; // la led est connéctée à l'entrée 3
int i = 0; // la variable i = 0
void setup() {
lcd.begin(16, 2);
Wire.begin();
DS3231_init(DS3231_INTCN);
t.hour=8; // données pour mettre à l'heure l'horloge
t.min=19;
t.sec=0;
t.mday=14 ;
t.mon=03;
t.year=2018;
DS3231_set(t); // mise à l'heure de l'horloge
pinMode(led, OUTPUT); // on défini la led comme sorti
}
void loop() {
// put your main code here, to run repeatedly:
DS3231_get(&t);
lcd.setCursor (0,0);
if (t.mday<10){
lcd.print('0');
lcd.print(t.mday);}
else
lcd.print(t.mday);
lcd.print("/");
if (t.mon<10){
lcd.print('0');
lcd.print(t.mon);}
else
lcd.print(t.mon);
lcd.print("/");
lcd.print(t.year);
lcd.setCursor (12,0);
lcd.print (rh);
lcd.print ("h");
if (rm<10){
lcd.print('0');
lcd.print(rm);}
else
lcd.print (rm);
lcd.setCursor (5,1);
if (t.hour<10){
lcd.print('0');
lcd.print(t.hour);}
else
lcd.print(t.hour);
lcd.print(" : ");
if (t.min<10){
lcd.print('0');
lcd.print(t.min);}
else
lcd.print(t.min);
if(t.hour == rh && t.min == rm){
{
lcd.clear ();
while (i < 10) // tant que i < 10
for (i=0; i<10;i++) // pour i de 0 à 10 , faire i+1
{
analogWrite(led,i); // allumer la led pendant i sec
delay(75); // par pas de 75 ms
lcd.setCursor (0,0);
if (t.mday<10){
lcd.print('0');
lcd.print(t.mday);}
else
lcd.print(t.mday);
lcd.print("/");
if (t.mon<10){
lcd.print('0');
lcd.print(t.mon);}
else
lcd.print(t.mon);
lcd.print("/");
lcd.print(t.year);
lcd.setCursor (12,0);
lcd.print (rh);
lcd.print ("h");
if (rm<10){
lcd.print('0');
lcd.print(rm);}
else
lcd.print (rm);
lcd.setCursor (5,1);
if (t.hour<10){
lcd.print('0');
lcd.print(t.hour);}
else
lcd.print(t.hour);
lcd.print(" : ");
if (t.min<10){
lcd.print('0');
lcd.print(t.min);}
else
lcd.print(t.min);
}
{
lcd.clear ();
while (i < 255) // tant que i < 255
for (i=10; i<255;i++) // pour i de 10 à 255 , faire i+1
{
analogWrite(led,i); // allumer la led pendant i sec
delay(1221); // par pas de 1221 ms
lcd.setCursor (0,0);
if (t.mday<10){
lcd.print('0');
lcd.print(t.mday);}
else
lcd.print(t.mday);
lcd.print("/");
if (t.mon<10){
lcd.print('0');
lcd.print(t.mon);}
else
lcd.print(t.mon);
lcd.print("/");
lcd.print(t.year);
lcd.setCursor (12,0);
lcd.print (rh);
lcd.print ("h");
if (rm<10){
lcd.print('0');
lcd.print(rm);}
else
lcd.print (rm);
lcd.setCursor (5,1);
if (t.hour<10){
lcd.print('0');
lcd.print(t.hour);}
else
lcd.print(t.hour);
lcd.print(" : ");
if (t.min<10){
lcd.print('0');
lcd.print(t.min);}
else
lcd.print(t.min);
}
}
{
digitalWrite (led, LOW); // quand i= 255 eteindre la led
}
}
}
}
Voila le code avec les deux ensembles
Merci d'avance pour vos réponses