Problème de débutant

Bonjour tout le monde,
J’ai très peu d’expérience en Arduino et tombe sur un os étrange.
Je me suis fait un programme pour synchroniser l’heure système de mon PC et celle d’une horloge DS1307 pluggée sur une Arduino Uno. J’ai entré dans les 6 premiers octets (/56) à la disposition de l’utilisateur ma localisation (45°55’ latitude Nord et 6°8’ Longitude est).
J’ai fait un deuxième programme qui déclenche un relais à l’heure astronomique du lever du soleil et à l’heure du coucher. Mes deux programmes fonctionnent parfaitement. Maintenant, je voudrais regrouper en un seul sketch ces deux programmes. Si la RTC doit être initialisée (année 2000) on la met à l’heure, on entre les coordonnées géoref dans la RAM et on exécute le programme principal, sinon, on exécute uniquement le programme principal.

Je travaille en ce moment sur un test pour savoir si l’horloge fonctionne. Je sais qu’elle fonctionne, qu’il y a une batterie dedans et qu’elle est à l’heure. Mais mon code me dit que l’horloge ne fonctionne pas…et je ne peux plus avancer. Avez-vous une idée de ce qui cloche dans mon code ? Merci d’avance.

#include <Wire.h>
#include <RTClib.h>

RTC_DS1307 RTC;

void setup(){                    
  Serial.begin(9600);           
}

void loop(){
  if (! RTC.isrunning()){ 
    Serial.println("RTC ne fonctionne pas !");
  }
  else{ 
    Serial.println("RTC fonctionne !");
  }
  delay(2000);
}

Bonjour,
a priori je dirai qu'il manque ça dans le setup() :

  Wire.begin();
  RTC.begin();

peux me tromper mais essaie voir d'ajouter :

Wire.begin();
RTC.begin();

dans ton setup...

Oupssss, m'as fait grillé ! :wink: :wink:

ensuite je voit dans ton loop que tu t'est tromper ^^
tu a écrit
if (! RTC.isrunning()){
Serial.println("RTC ne fonctionne pas !");
}
else{
Serial.println("RTC fonctionne !");
}

ce qui veut dire que
si RTC.isrunning alors j'écrit RTC ne fonctionne pas
sinon RTC fonctionne

ça sera plutôt si RTC.isrunning alors j'écrit RTC fonctionne

sinon même si ton RTC fonctionne jamais tu ne pourra t'en servir car tu croit qu'il ne fonctionne pas

anthology:
ensuite je voit dans ton loop que tu t'est tromper ^^
tu a écrit
if (! RTC.isrunning()){
Serial.println("RTC ne fonctionne pas !");
}
else{
Serial.println("RTC fonctionne !");
}

ce qui veut dire que
si RTC.isrunning alors j'écrit RTC ne fonctionne pas

Le "!" veut dire "not".

ah daccord
merci pour l'infos
ca s'appliquer tout le temps ou que dans certains cas ?

Pour toutes les opérations sur des booléens

autant pour moi je connaissait pas
merci

Ca peut aussi servir à inverser la valeur d'un bool

bool = !bool;

C'est bien pratique desfois :wink: