Bonjour à tous je me permets de crée un post pour demander quelque information pour mon projet d'horloge binaire
Je suis un débutant en programmation je m'y connais un peut en Electronique, je sais utiliser l'arduino (je suis électricien a la base) soient gentil avec moi c'est mon premier post ^^
J’ai déjà trouvé pas mal d'information et divers code mais jamais ce que j'avais besoin
J’aimerai piloter mon horloge à l'aide d'un arduino mini pro (je fais mes tests avec un micro), 3x74HC595 et un module rtc pour retenir l'heure
J’ai réalisé une petite image de mon prototype pour faire simple ^^ elle n'est pas vraiment parfaite mais sa suffira pour donne une idée ^^
J’ai réussi a créé un code "fonctionnel" mais qui ne l'est pas vraiment, je m'explique normalement dans une horloge binaire les unités des heure/minute/seconde se compte en binaire sur les 4 première led et les dizaines sur les 3/2 led suivante, dans mon cas il ne sépare pas les unités des dizaines
Pour faire "simple" quand il écrit le chiffre 15 en binaire il l'écrit avec les 4 première led " 1111 " Alor qu'il devrai l'écrire avec les 3 autre led " 001 / 1001 "
Je pense avoir la solution dans la partie du code que j'ai récupéré mais je n'arrive pas à la comprendre
byte decodeBCD(byte bcdValue)
{
return (10 * (bcdValue >> 4)) + (0xf & bcdValue);
}
byte encodeBCD(byte value)
{
return ((value/10)<< 4) | (value % 10);
}
Sinon voici mon code
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
int latchPin = 8;
int clockPin = 12;
int dataPin = 11;
void setup() {
Serial.begin(9600);
Wire.begin();
RTC.begin();
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
RTC.adjust(DateTime(__DATE__, __TIME__));
}
byte bcdSecond;
byte bcdMinute;
byte bcdHour;
void loop() {
DateTime now = RTC.now();
bcdSecond= now.second();
bcdMinute= now.minute();
bcdHour= now.hour();
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, bcdHour);
shiftOut(dataPin, clockPin, MSBFIRST, bcdMinute);
shiftOut(dataPin, clockPin, MSBFIRST, bcdSecond);
digitalWrite(latchPin, HIGH);
}
Pour bien faire il faudrait que les 74h595 «oublie » leur première sortie c’est plus simple pour les pcb
Pouvez-vous m'aider à comprendre la partie du code qui me manque et à l'appliquer correctement ? J’ai essayé de chercher pendant plusieurs jours mais je n'arrive pas à trouver quelque chose de clair en français et surtout je ne sais pas quoi chercher exactement : /