Salut,
Je suis actuellement en train de développer une horloge. J'affiche l'heure sur 6 matrice, et je la lis avec une TinyRTC ( Celle-ci ).
Mais le problème est que je ne peux pas stocker l'heure... Dès que je mets une pile dans ma RTC, elle s'arrête de fonctionner sans raison apparente. J'ai deux pile et cela me fait exactement avec l'une ou l'autre.
Je voulais donc savoir si c'était déjà arriver à quelqu'un ? Ou qui aurait une solution
Merci d'avance
Mon code (pas très optimisé et pas très beau :3 ) :
#include <Wire.h>
#include <RTClib.h>
#include "LedControl.h"
int item = 6; // Nombre de matrice
LedControl lc=LedControl(12,11,10,item); // Pins: DIN,CLK,CS, # of Display connected
RTC_DS1307 RTC; //Classe RTC_DS1307 // RTC
unsigned long delayTime=200; // Delay between Frames
int numero_affichage = 0;
int old_seconde = 0;
int old_heure = 0;
int old_minut = 0;
int seconde_a = 0;
int minut_a = 0;
int heure_a = 0;
int seconde_b = 0;
int minut_b = 0;
int heure_b = 0;
int seconde = 0;
int minut = 0;
int heure = 0;
int flag = 0;
// Put values in arrays
byte n_0[] =
{
B00111100,
B01111110,
B01100110,
B01100110,
B01100110,
B01100110,
B01111110,
B00111100
};
byte n_1[] =
{
B00001100,
B00011100,
B00111100,
B00001100,
B00001100,
B00001100,
B00001100,
B00001100
};
byte n_2[] =
{
B00111100,
B01111110,
B01100110,
B00001110,
B00111100,
B01110000,
B01111110,
B01111110
};
byte n_3[] =
{
B01111110,
B01111110,
B00001110,
B00111100,
B00111110,
B00000110,
B01111110,
B00111100
};
byte n_4[] =
{
B01100110,
B01100110,
B01100110,
B01111110,
B01111110,
B00000110,
B00000110,
B00000110
};
byte n_5[] =
{
B01111110,
B01111110,
B01100000,
B01111100,
B00111110,
B00000110,
B01111110,
B00111100
};
byte n_6[] =
{
B00011100,
B00111100,
B01110000,
B01111100,
B01100110,
B01100110,
B01111110,
B00111100
};
byte n_7[] =
{
B01111110,
B01111110,
B00000110,
B00001110,
B00011100,
B00011000,
B00011000,
B00011000
};
byte n_8[] =
{
B00111100,
B01111110,
B01100110,
B01100110,
B01111110,
B01100110,
B01111110,
B00111100
};
byte n_9[] =
{
B00111100,
B01111110,
B01100110,
B01100110,
B01111110,
B00111110,
B00001110,
B00111100
};
void setup()
{
Serial.begin(9600);
RTC.begin(); //Démarrage de la librairie RTClib.h
if (! RTC.isrunning()) {
Serial.println("RTC ne fonctionne pas !");
}
//Met à l'heure à date à laquelle le sketch est compilé
RTC.adjust(DateTime(__DATE__, __TIME__));
lc.shutdown(0,false);
lc.shutdown(1,false);
lc.shutdown(2,false);
lc.shutdown(3,false);
lc.shutdown(4,false);
lc.shutdown(5,false);
lc.setIntensity(0,5);
lc.setIntensity(1,5);
lc.setIntensity(2,5);
lc.setIntensity(3,5);
lc.setIntensity(4,5);
lc.setIntensity(5,5);
lc.clearDisplay(0);
lc.clearDisplay(1);
lc.clearDisplay(2);
lc.clearDisplay(3);
lc.clearDisplay(4);
lc.clearDisplay(5);
}
void loop()
{
DateTime now = RTC.now();
seconde = now.second();
minut = now.minute();
heure = now.hour();
old_seconde = seconde;
old_minut = minut;
old_heure = heure;
seconde_a = seconde / 10;
seconde_b = seconde - (seconde_a * 10);
minut_a = minut / 10;
minut_b = minut - (minut_a * 10);
heure_a = heure / 10;
heure_b = heure - (heure_a * 10);
affichage(heure_a, 0);
affichage(heure_b, 1);
affichage(minut_a, 2);
affichage(minut_b, 3);
affichage(seconde_a, 4);
affichage(seconde_b, 5);
}
void affichage(int numero, int afficheur)
{
switch(numero)
{
case 0 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_0[i]);
}
break;
case 1 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_1[i]);
}
break;
case 2 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_2[i]);
}
break;
case 3 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_3[i]);
}
break;
case 4 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_4[i]);
}
break;
case 5 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_5[i]);
};
break;
case 6 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_6[i]);
}
break;
case 7 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_7[i]);
}
break;
case 8 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_8[i]);
}
break;
case 9 :
for (int i = 0; i < 8; i++)
{
lc.setRow(afficheur,i,n_9[i]);
}
break;
}
}