Bonsoir,
J'essaye depuis plus de 5heures de faire une horloge sans succes
J'ai reussis a faire le systeme d'heures avec un module rtc et le digital display mais je n'arrive pas a lier les deux.
Voici mes 2 codes:
Désoler pour les fautes et le post un peut baclé mais j'en ai marre.
Afficheur
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
int digit1 = A1;
int digit2 = A2;
int digit3 = A3;
int digit4 = A4;
int A = 1;
int B = 2;
int C = 3;
int D = 4;
int E = 5;
int F = 6;
int G = 7;
void setup() {
pinMode(A1, OUTPUT) ;
pinMode(A2, OUTPUT) ;
pinMode(A3, OUTPUT) ;
pinMode(A4, OUTPUT) ;
pinMode(1, OUTPUT) ;
pinMode(2, OUTPUT) ;
pinMode(3, OUTPUT) ;
pinMode(4, OUTPUT) ;
pinMode(5, OUTPUT) ;
pinMode(6, OUTPUT) ;
pinMode(7, OUTPUT) ;
//Désactivation de tous les digits
digitalWrite(digit1, HIGH);
digitalWrite(digit2, HIGH);
digitalWrite(digit3, HIGH);
digitalWrite(digit4, HIGH);
}
void loop() {
DateTime now = rtc.now();
setAfficheur(now.hour);
}
//-------------------------------
// Définition des FONCTIONS
//-------------------------------
void setNumber(int nombre) {
switch (nombre) {
case 1 :
digitalWrite(A, 0) ;
digitalWrite(B, 1) ;
digitalWrite(C, 1) ;
digitalWrite(D, 0) ;
digitalWrite(E, 0) ;
digitalWrite(F, 0) ;
digitalWrite(G, 0) ;
break;
case 2 :
digitalWrite(A, 1) ;
digitalWrite(B, 1) ;
digitalWrite(C, 0) ;
digitalWrite(D, 1) ;
digitalWrite(E, 1) ;
digitalWrite(F, 0) ;
digitalWrite(G, 1) ;
break;
case 3 :
digitalWrite(A, 1) ;
digitalWrite(B, 1) ;
digitalWrite(C, 1) ;
digitalWrite(D, 1) ;
digitalWrite(E, 0) ;
digitalWrite(F, 0) ;
digitalWrite(G, 1) ;
break;
case 4 :
digitalWrite(A, 0) ;
digitalWrite(B, 1) ;
digitalWrite(C, 1) ;
digitalWrite(D, 0) ;
digitalWrite(E, 0) ;
digitalWrite(F, 1) ;
digitalWrite(G, 1) ;
break;
case 5 :
digitalWrite(A, 1) ;
digitalWrite(B, 0) ;
digitalWrite(C, 1) ;
digitalWrite(D, 1) ;
digitalWrite(E, 0) ;
digitalWrite(F, 1) ;
digitalWrite(G, 1) ;
break;
case 6 :
digitalWrite(A, 1) ;
digitalWrite(B, 0) ;
digitalWrite(C, 1) ;
digitalWrite(D, 1) ;
digitalWrite(E, 1) ;
digitalWrite(F, 1) ;
digitalWrite(G, 1) ;
break;
case 7 :
digitalWrite(A, 1) ;
digitalWrite(B, 1) ;
digitalWrite(C, 1) ;
digitalWrite(D, 0) ;
digitalWrite(E, 0) ;
digitalWrite(F, 0) ;
digitalWrite(G, 0) ;
break;
case 8 :
digitalWrite(A, 1) ;
digitalWrite(B, 1) ;
digitalWrite(C, 1) ;
digitalWrite(D, 1) ;
digitalWrite(E, 1) ;
digitalWrite(F, 1) ;
digitalWrite(G, 1) ;
break;
case 9 :
digitalWrite(A, 1) ;
digitalWrite(B, 1) ;
digitalWrite(C, 1) ;
digitalWrite(D, 1) ;
digitalWrite(E, 0) ;
digitalWrite(F, 1) ;
digitalWrite(G, 1) ;
break;
case 0 :
digitalWrite(A, 1) ;
digitalWrite(B, 1) ;
digitalWrite(C, 1) ;
digitalWrite(D, 1) ;
digitalWrite(E, 1) ;
digitalWrite(F, 1) ;
digitalWrite(G, 0) ;
break;
default:
digitalWrite(A, 0) ;
digitalWrite(B, 0) ;
digitalWrite(C, 0) ;
digitalWrite(D, 0) ;
digitalWrite(E, 0) ;
digitalWrite(F, 0) ;
digitalWrite(G, 1) ;
break;
break;
}
}
void setDigit(int digit, int nombre) {
switch(digit) {
case 1 :
digitalWrite(digit1, LOW) ;
digitalWrite(digit2, HIGH) ;
digitalWrite(digit3, HIGH) ;
digitalWrite(digit4, HIGH) ;
setNumber(nombre) ;
break;
case 2 :
digitalWrite(digit1, HIGH) ;
digitalWrite(digit2, LOW) ;
digitalWrite(digit3, HIGH) ;
digitalWrite(digit4, HIGH) ;
setNumber(nombre) ;
break;
case 3 :
digitalWrite(digit1, HIGH) ;
digitalWrite(digit2, HIGH) ;
digitalWrite(digit3, LOW) ;
digitalWrite(digit4, HIGH) ;
setNumber(nombre) ;
break;
case 4 :
digitalWrite(digit1, HIGH) ;
digitalWrite(digit2, HIGH) ;
digitalWrite(digit3, HIGH) ;
digitalWrite(digit4, LOW) ;
setNumber(nombre) ;
break;
}
}
void setAfficheur(int nombre) {
int M = nombre/1000, C = (nombre-M*1000)/100, D = (nombre-M*1000-C*100)/10,
U=(nombre-M*1000-C*100-D*10) ;
setDigit(4, U) ;
delay(2);
setDigit(3, D) ;
delay(2);
setDigit(2, C) ;
delay(2);
setDigit(1, M) ;
delay(2);
}
RTC
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup () {
while (!Serial);
Serial.begin(115200);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop () {
DateTime now = rtc.now();
rtc.adjust(now.unixtime());
Serial.print(now.hour());
Serial.print(':');
Serial.print(now.minute());
Serial.print(' ');
}