Bonjour,
Je vous écris car je débute en Arduino et je souhaite réaliser une horloge à l'aide d'un module DS3231. Le but final étant une horloge à Nixie (comme c'est original ^^) mais pour le moment je m'entraine avec des 7-segments et des sn7447.
Cependant je rencontre un problème, lorsque je récupère l'heure à l'aide du DS3231 le 7 segment devient fou.
Je pense que c'est un problème de type ou ma méthode de bouclage avec le while qui n'est peut-être pas très propre mais je suis dans une impasse malgré tout mes essais.
Voilà le code:
#include <Wire.h>
#include "RTClib.h"
RTC_DS3231 rtc;
int tab[10][4] = {
{0,0,0,0}, //0
{1,0,0,0}, //1
{0,1,0,0}, //2
{1,1,0,0}, //3
{0,0,1,0}, //4
{1,0,1,0}, //5
{0,1,1,0}, //6
{1,1,1,0}, //7
{0,0,0,1}, //8
{1,0,0,1} //9
};
void setup () {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
Serial.begin(9600);
}
void loop () {
DateTime now = rtc.now();
int seconde = now.second();
int seconde1 = seconde;
int dec = seconde/10;
int uni = seconde%10;
while(seconde==seconde1){
digitalWrite(0, tab[dec][0]);
digitalWrite(1, tab[dec][1]);
digitalWrite(2, tab[dec][2]);
digitalWrite(3, tab[dec][3]);
digitalWrite(11, HIGH);
delay (10);
digitalWrite(11, LOW);
delay(1);
digitalWrite(0, tab[uni][0]);
digitalWrite(1, tab[uni][1]);
digitalWrite(2, tab[uni][2]);
digitalWrite(3, tab[uni][3]);
digitalWrite(10, HIGH);
delay (10);
digitalWrite(10, LOW);
delay(1);
DateTime now = rtc.now();
int seconde1 = now.second();
}
}
Je vous explique un peu le code, 'tab' est une matrice de commande du BCD, je n'utilise pas les deux 7-segments en même temps (je ferais ça sur les nixies pour limiter la consommation).
Si quelqu'un a une idée pour résoudre mon problème et aussi une méthode plus propre pour la boucle je suis preneur.
PS: Je suis un arduino UNO.
Merci,
Dimitri