[RESOLU] RTC LIB DS1307

Bonjour

J’ai un petit souci avec une horloge que je n’arrive pas à faire fonctionner.
Je suis néophyte en la matière.

Arduino mega

Tiny RCE I2C Modules

Pile bouton 3v ok ( mesurée au volmtmètre )

J’ai vu un post de 2014 mais je pense que ce n’est pas le même pb.

Si j’utilise la classe RTC_DS1307, cela plante à la ligne if ( ! RTC.isrunning )

Si j’utilise la classe RTC_Millis, cela fonctionne parfaitement.

Le pb, c’est cette solution ne marche pas sans PC car je perds l’heure

Merci pour votre attention

Cdlt

Postez du code en copier coller avec les balises, pas des copies d’ecran.

Comment avez vous câblé, quel arduino, etc.... ?

pour utiliser une rtc facilement, il y a les libs de bricoleau :

Bonjour

J’ai voulu refaire mon cablage pour la photo et maintenant mon script reboot également avec le
RTC_Millis à l’éxécution de la ligne

Datetime dt = RTC.now() ;

En 2 et 12, les switchs de fin de course
Une résistance de 10k entre le 5v et le 1er switch

En 9 le moteur avec alim externe
GND commun carte + moteur

Horloge

SDA en 20
SCL en 21

Le code dépasse 9000 octets donc en pj.

Est-ce mon horloge qui est défaillante ?

Pas d’urgence, je pars en vacances.

Je la changerai à mon retour.

Merci

tb we à vous

// Controôle de la trappe
// Autheur : JF FRAT


#include <Servo.h>
#include <Wire.h>

#define sv 9        // PIN Moteur
#define sw_b 2      // PIN Switch Bas
#define sw_h 12     // PIN Switch Haut
#define alerte 13   // PIN Led carte pour erreur





bool erreur = false ;
bool ouvert = false  ;
int s = 0 ;
int n = 90 ;
int v = 3   ;
int t = 11 ;
int timeout = 15 ;
 



Servo myservo;  // moteur

#include <RTClib.h>

// Utilsation de RTC_Millis
// ------------------------

 RTC_Millis RTC ;

// Utilsation de RTC_DS1307
// ------------------------

// RTC_DS1307 RTC;




void setup() {

  // Renvoie de donnée à la console
  // ------------------------------
 
  Serial.begin (9600 ) ;

  // horloge
  // -------
  
  Wire.begin();    
  

  // Utilsation de RTC_Millis
  // ------------------------

  if ( true ) {
    Serial.println ( "Avant Begin" ) ;
    RTC.begin (DateTime(__DATE__, __TIME__));
    Serial.println ( "Après Begin" ) ;
  }
  // Utilsation de RTC_DS1307
  // ------------------------
  if ( false ) {
    Serial.println ( "Avant Begin" ) ;
// RTC.begin();
    Serial.println ( "Après Begin" ) ;

//  if ( ! RTC.isrunning() ) {
      Serial.println ( "Avant Adjust" ) ;
//    RTC.adjust(DateTime(__DATE__, __TIME__));
      Serial.println ( "Apres Adjust" ) ;
//  }
 
  }
  
  // Les switch
  // ----------
  
  pinMode (alerte , OUTPUT );
  pinMode (sw_b , INPUT );
  pinMode (sw_h , INPUT );
 

  // Ouverture à l'initialisation du système 
  // ---------------------------------------
  
  OuvertureTrappe( true ) ;

  
}


/*
Dans cette fonction, on gère 24 quinzaine pour l'année
Le tableau a_jj reprèsente le début de la quinzaine
Le tableau a_ls reprèsente le lever du soleil au 1er jour de la quinzaine
Le tableau a_cs reprèsente le coucher du soleil au 1er jour de la quinzaine
*/


bool HorairesOuverture() {
  
  DateTime dt = RTC.now() ;
  

   // .........  
}




void loop() {

  if ( ! erreur ) {

    Serial.println ("Boucle LOOP") ; 

    
      if ( HorairesOuverture() == true ) {
    
          // La trappe doit être ouverte 
          // ---------------------------
          
          if ( ! ouvert ) OuvertureTrappe( false ) ;
        
      } else {
        
          if ( ouvert ) FermetureTrappe() ;
        
      }
  
  }


  if ( erreur ) {

    // faire clignoter la led de la carte
    // ----------------------------------

    for ( int i=0 ; i <60; i++ ) {
      digitalWrite ( alerte , HIGH ) ;
      delay ( 500 ) ;
      digitalWrite ( alerte , LOW ) ;
      delay ( 500 ) ;
    }        
    
  
  } else {
  
      // attendre 1 minute soit 60 secondes
      // ----------------------------------
      
      if ( ! ouvert ) 
        Serial.println( "Etat de la trappe : Fermée"  ) ;
      else
        Serial.println( "Etat de la trappe : Ouverte"  ) ;
       
      delay ( 15 * 1000 ) ;

  
  }

  
} 
    



// connection / déconnecteur du moteur 

void ConnectMoteur ( bool c ) {

//..........

}







void OuvertureTrappe ( bool demarrage ) {



    
}  





void FermetureTrappe () {


    
}

trappe.ino (10.6 KB)

Bonjour

J'ai changé l'horloge avec une DS3231.

A priori, tout est OK.

Merci à tous.