[Aide] Pour faire un IF avec StrLen / Et un problème RTC et Capteur de temp.

Bonjour, je viens vers vous, car sur un gros programme j’aimerais faire une boucler “Si aucun message envoyé alors, faire ça” donc on m’a indiqué qu’il faut faire un IF et utilisé StrlLen mais je ne vois pas comment.

La ligne ou taper le commande est :

char Message[] = ""; // Pas d'espace pour écrire sur tous les afficheurs

J’ai donc tenté :

if strlen(Message=0)

Mais l’erreur suivante apparaît expected unqualified-id before ‘if’


Ensuite sur mon deuxième programme, j’aimerais que la date,heure et la température s’affiche, or uniquement l’heure et la date s’affiche

// BTS SN2 Adrien DECOURCELLE 2018-2019 
// Lgt Philippe De Girard

// Fonction de Date et heure en utilisant 
// le RTC DS1307 RTC via bus I2C et librairie Wire

#include <Wire.h>
#include "RTClib.h"
#include <OneWire.h>
#include <time.h>

// DS18B20
OneWire ds(10);
#define BAUDRATE 57600

boolean started = false;
// Utiliser la classe RTC_DS1307 ou RTC_PCF8523 en 
// fonction du module RTC utilisé
RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC n est pas en cours de fonctionnement!");
    
    // La ligne suivante fixe la date et l'heure du RTC avec les dates et heures de compilation du sketch
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }

}
void loop (){
    DateTime now = RTC.now();
    
    // Jour
    Serial.print(now.day(), DEC);
    Serial.print('/');
    // Mois
    Serial.print(now.month(), DEC);
    Serial.print('/');
    // Année
    Serial.print(now.year(), DEC);
    Serial.print(' ');
    // Heure
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    // Minute
    Serial.print(now.minute(), DEC);
    Serial.print(':');
     // Seconde
    Serial.print(now.second(), DEC);
    Serial.println();
    // Rapidité de message en ms (3000 ms = 3 s par exemple)
    Serial.println();
    delay(1000);


// Partie du Capteur DS18B20
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius;

  // Chercher l'adresse du capteur
  if ( !ds.search(addr)) {
    Serial.println();
    ds.reset_search();
    delay(1000);
    return;
  }
  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC non valide!");
      return;
  }
  Serial.println();
 
  // Indication du type de capteur
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 
  
  if (started == false)
   { present = ds.reset();
     ds.select(addr);
     ds.write(0x4E);
     ds.write(0x4B);
     ds.write(0x46);
     ds.write(0x6f);
     started = true;
   } 

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
  
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("  Data = ");
  Serial.print(present, HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();
 
  // Convert the data to actual temperature
  // because the result is a 16 bit signed integer, it should
  // be stored to an "int16_t" type, which is always 16 bits
  // even when compiled on a 32 bit processor.
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, "); 
  }

AfficheurArduinoProjet.ino (13.7 KB)

if (strlen(Message)==0)

Est-ce que la partie du capteur affiche quelque chose quand même ?

Bonjour, merci de ta réponse. Pour ta ligne de commande, cela me faire toujours la même erreur :confused:

Quand t-au deuxième programme, oui j’ai l’heure et la date qui s’affiche mais pas la température

Peux-tu copier dans ta réponse le message d'erreur (il y a un bouton en bas de l'IDE pour ça) en entier et fournir le code ?

Pour le second programme, je voulais savoir s'il affiche d'autres choses que la date et l'heure, genre Temperature =

Le code est trop long car c'est pour gérer un afficheur mais je peux l'insérer dans mon premier post je fais ça !

Code erreur programme 1 :

AfficheurTEST:268:1: error: expected unqualified-id before 'if'

if (strlen(Message)==0)

^

Plusieurs bibliothèque trouvées pour "OneWire.h"
Utilisé : U:\Documents\Arduino\libraries\OneWire
Non utilisé : U:\Documents\Arduino\libraries\MAX31850_OneWire
Plusieurs bibliothèque trouvées pour "RTClib.h"
Utilisé : U:\Documents\Arduino\libraries\RTClib
Non utilisé : U:\Documents\Arduino\libraries\RTCLib_by_NeiroN
exit status 1
expected unqualified-id before 'if'

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

(J'ai enlevé les Warning car ça dépasse la limite de post)


Non seulement:
24/4/2019 11:12:9

D'ailleurs il a une heure de moins , à cause du changement d'heure ?

Au début tu avais une erreur de syntaxe sur le if. Maintenant, elle est corrigée, mais tu as une autre erreur sur la ligne précédente (genre oubli d’un ; par exemple) : copie les quelques lignes avant et après le if pour voir…

Pour la RTC, l’heure est initialisée par cette ligne
RTC.adjust(DateTime(DATE, TIME));
C’est l’heure de la compilation : il est possible que le compilateur n’ait pas suivi le changement d’heure en effet. Regarde s’il indique l’heure dans les toutes premières lignes des messages de compilation.

Essaye avec ce code et dis moi ce qu’il affiche :

// BTS SN2 Adrien DECOURCELLE 2018-2019 
// Lgt Philippe De Girard

// Fonction de Date et heure en utilisant 
// le RTC DS1307 RTC via bus I2C et librairie Wire

#include <Wire.h>
#include "RTClib.h"
#include <OneWire.h>
#include <time.h>

// DS18B20
OneWire ds(10);
#define BAUDRATE 57600

boolean started = false;
// Utiliser la classe RTC_DS1307 ou RTC_PCF8523 en 
// fonction du module RTC utilisé
RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC n est pas en cours de fonctionnement!");
    
    // La ligne suivante fixe la date et l'heure du RTC avec les dates et heures de compilation du sketch
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }

}
void loop (){
    DateTime now = RTC.now();
    
    // Jour
    Serial.print(now.day(), DEC);
    Serial.print('/');
    // Mois
    Serial.print(now.month(), DEC);
    Serial.print('/');
    // Année
    Serial.print(now.year(), DEC);
    Serial.print(' ');
    // Heure
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    // Minute
    Serial.print(now.minute(), DEC);
    Serial.print(':');
     // Seconde
    Serial.print(now.second(), DEC);
    Serial.println();
    // Rapidité de message en ms (3000 ms = 3 s par exemple)
    Serial.println();
    delay(1000);


// Partie du Capteur DS18B20
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius;

  // Chercher l'adresse du capteur
  if ( !ds.search(addr)) {
    Serial.println("Recherche adresse capteur");
    ds.reset_search();
    delay(1000);
    return;
  }
  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC non valide!");
      return;
  }
  Serial.println("Debut capteur");
 
  // Indication du type de capteur
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 
  
  if (started == false)
   { present = ds.reset();
     ds.select(addr);
     ds.write(0x4E);
     ds.write(0x4B);
     ds.write(0x46);
     ds.write(0x6f);
     started = true;
   } 

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
  
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
  
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("  Data = ");
  Serial.print(present, HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();
 
  // Convert the data to actual temperature
  // because the result is a 16 bit signed integer, it should
  // be stored to an "int16_t" type, which is always 16 bits
  // even when compiled on a 32 bit processor.
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, "); 
  }

Je pense que tu as un problème avec le capteur : ton code a des ‘return’ en cas de problème qui font que le code ne va pas plus loin et ne fait pas la mesure de température. Vérifie qu’il est correctement câblé. Teste-le avec un code plus simple si tu en as un.

Ce rapport pourrait être plus détaillé avec
l'option "Afficher les résultats détaillés de la compilation"
activée dans Fichier -> Préférences.

Ce serait bien de suivre ce conseil car les messages seront plus explicites

Pour le programme N°1 , un ami à moi est venu et à déclarer des variables int longeurchaine = 0;

dans le void int longeurchaine = 0;

et pour le if il a écrit
longeurchaine=strlen(Message);
if (longeurchaine==0)

Il a comme erreur ‘longeurchaine’ does not name a type


Pour les lignes avant et après que tu demandes (avant que mon ami modifie)

AVANT :

  /* Le contenu de buffer contient des espaces qu'il faut supprimer*/
  /* Recherche du caractère "Espace(0x20) dans le tableau buffer (Voir aide fonction strtok())*/
  char dlm[] = "' '"; // Délimiteur/Séparateur "espace" contenu dans la "chaine" buffer
  int cnt = 0;
  char *pch ;// Equivalent char *pch=strtok(buffer, dlm);
  pch = strtok(buffer, dlm); //
  /* Suppression de tous les espaces. On ne garde que les codes ASCII (en base10)*/
  /* On fabrique donc un tableau tab qui contiendra les numéros des lignes de la table ASCII[128][5]*/
  while ( pch != 0)
  {
    if (cnt < Nb_Car_Mess) tab[cnt++] = pch;
    pch = strtok (NULL, dlm);
  }
  /* A l'issue de ce code j'ai maintenant tab[0]=mm, tab[1]=nn, etc,.*/

  SPI.begin();
  SPI.setClockDivider(SPI_CLOCK_DIV128);

  digitalWrite(STROBE, LOW);

  for (NumAFF = 0; NumAFF <= 23; NumAFF++) SPI.transfer(0x00); // Extinction des afficheurs avant d'envoyer un message
  digitalWrite(STROBE, HIGH);
  digitalWrite(OE, LOW);
}



void Afficheur (void) {
  {
    /* Affichage du message*/
    for ( NumCol_AFF = 0;  NumCol_AFF <= 4;  NumCol_AFF++) // Multiplexage des colonnes (commande du HC138)
    {
      //On active le verrou le temps de transférer les données
      digitalWrite(STROBE, LOW);
      for (NumAFF = 0; NumAFF <= 23; NumAFF++) SPI.transfer(0x00); // Extinction des afficheurs avant d'envoyer un message
      /* Attention*/
      /* La chaine "Message doit être envoyée à l'envers!. Ici CE2NS_STB*/
      for (int Lign_ASCII = (Nb_Car_Mess - 1); Lign_ASCII >= 0; Lign_ASCII--)
        SPI.transfer(ASCII[atoi(tab[Lign_ASCII]) - 1][ NumCol_AFF]); // Affichage du message. Lign_ASCCI-1 car on commence à la ligne 0.
      PORTB = (PORTB & 0x1F);
      digitalWrite(STROBE, HIGH); // On déverrouille les LATCH
      PORTB = PORTB | (( NumCol_AFF + 1) << 5); // On passe d'une colonne d'un afficheur 5x7 à l'autre
    }// Fin affichage du message

  }// Fin loop
}
// Boucle Si, si aucun

APRES :

if strlen.(Message=0)
{
  void temp (void)
  {
    byte i;
    byte present = 0;
    byte type_s;
    byte data[12];
    byte addr[8];
    float celsius, fahrenheit;

    if ( !ds.search(addr)) {
      Serial.println("No more addresses.");
      Serial.println();
      ds.reset_search();
      delay(250);
      return;
    }

    ds.reset();
    ds.select(addr);
    ds.write(0x44, 1);        // start conversion, with parasite power on at the end

    delay(1000);     // maybe 750ms is enough, maybe not
    // we might do a ds.depower() here, but the reset will take care of it.

    present = ds.reset();
    ds.select(addr);
    ds.write(0xBE);         // Read Scratchpad

    Serial.print("  Data = ");
    Serial.print(present, HEX);
    Serial.print(" ");
    for ( i = 0; i < 9; i++) {           // we need 9 bytes
      data[i] = ds.read();
      Serial.print(data[i], HEX);
      Serial.print(" ");
    }
    Serial.print(" CRC=");
    Serial.print(OneWire::crc8(data, 8), HEX);
    Serial.println();



    int16_t raw = (data[1] << 8) | data[0];
    if (type_s) {
      raw = raw << 3; // 9 bit resolution default
      if (data[7] == 0x10) {
        // "count remain" gives full 12 bit resolution
        raw = (raw & 0xFFF0) + 12 - data[6];
      }
    } else {
      byte cfg = (data[4] & 0x60);

      if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
      else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
      else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
      //// default is 12 bit resolution, 750 ms conversion time
    }
    celsius = (float)raw / 16.0;
    fahrenheit = celsius * 1.8 + 32.0;
    Serial.print("  Temperature = ");
    Serial.print(celsius);
    Serial.print(" Celsius, ");
  }


  void Horloge(void)
  {
    DateTime now = RTC.now();

    if (now.hour() < 10) {
      Serial.print("0");
    }
    // Affichage de l'heure
    Serial.print(now.hour(), DEC);
    Serial.print(":");
    if (now.minute() < 10) {
      Serial.print("0");
    }
    // Des minutes
    Serial.print(now.minute(), DEC);
    Serial.print(":");
    if (now.second() < 10) {
      Serial.print("0"); if (tab[sizeof(Message)] = {0})
      {
      }
      // Des secondes
      Serial.print(now.second(), DEC);
      Serial.print("; ");
      // Jour mois année
      if (now.day() < 10) {
        Serial.print("0");
      }
      Serial.print(now.day(), DEC);
      Serial.print('-');
      if (now.month () < 10) {
        Serial.print("0");
      }
      Serial.print(now.month(), DEC);
      Serial.print('-');
      Serial.println(now.year(), DEC);

      Serial.println();
    }
  }
  // Programme principal
  void loop() {
    Afficheur();
    if (Serial.available() > 0) {
      ch = Serial.read();
      Serial.println(ch);
      switch (ch)
      { case 'T' : temp();
        case 'H' : Horloge();
      }
    }

  }
}
}
//Fin du programme principal

Pour le programme N°2 il m’affiche " Recherche adresse capteur
24/4/2019 11:38:27"

Tu as

if strlen.(Message=0)

rien à voir avec ce que je t'ai envoyé

if (strlen(Message)==0)

Pour le programme 2, le problème doit venir d’ici

 // Chercher l'adresse du capteur
 if ( !ds.search(addr)) {
   Serial.println("Recherche adresse capteur");
   ds.reset_search();
   delay(1000);
   return;  // <-- C'est là qu'il bloque
 }

ds est défini ici

// DS18B20
OneWire ds(10);

Tu l’as bien branché sur la pin 10 ?

Tu devrais essayer un code plus simple comme celui indiqué ici pour voir si ça fonctionne.

Pour info, vous avez 2 horreurs:
a) strlen est une fonction c standard: strlen(chaineDontOnChercheLaLongueur) est la syntaxe correcte
b) "=" -affectation- et '==' -comparaison sont deux notions distinctes...

Bonjour désolé du temps de réponse.

Pour le programme N°1 même en tapant :

if (strlen(Message)==0)

l'erreur suivante apparaît "Expected unqualified-id before "if'

Et pour le programme N°2 , un "shield" à été créée l'an passé pour permettre de brancher le capteur et la RTC dessus et relier au connecteur de l'afficheur . Le shield est relié à "tout" donc normalement aucun soucis quoi.
La en téléversant, celui-ci m'affiche heure,date et "recherche capteur"

Après à noté que le code seul du capteur marche si je la branche seule :confused:

Je me permets de up ! x:

Bonjour,

Mets ton programme modifié.

... en entier ...

Bonjour, je l’ai mis sur le premier post (Pour le IF)

et pour le RTC et capteur de température :

0// BTS SN2 Adrien DECOURCELLE 2018-2019
// Lgt Philippe De Girard

// Fonction de Date et heure en utilisant
// le RTC DS1307 RTC via bus I2C et librairie Wire

#include <Wire.h>
#include "RTClib.h"
#include <OneWire.h>
#include <time.h>

// DS18B20
OneWire ds(10);
#define BAUDRATE 57600

boolean started = false;
// Utiliser la classe RTC_DS1307 ou RTC_PCF8523 en
// fonction du module RTC utilisé
RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC n est pas en cours de fonctionnement!");
   
    // La ligne suivante fixe la date et l'heure du RTC avec les dates et heures de compilation du sketch
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }

}
void loop (){
    DateTime now = RTC.now();
   
    // Jour
    Serial.print(now.day(), DEC);
    Serial.print('/');
    // Mois
    Serial.print(now.month(), DEC);
    Serial.print('/');
    // Année
    Serial.print(now.year(), DEC);
    Serial.print(' ');
    // Heure
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    // Minute
    Serial.print(now.minute(), DEC);
    Serial.print(':');
     // Seconde
    Serial.print(now.second(), DEC);
    Serial.println();
    // Rapidité de message en ms (3000 ms = 3 s par exemple)
    Serial.println();
    delay(1000);


// Partie du Capteur DS18B20
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius;

  // Chercher l'adresse du capteur
  if ( !ds.search(addr)) {
    Serial.println("Recherche adresse capteur");
    ds.reset_search();
    delay(1000);
    return;
  }
  if (OneWire::crc8(addr, 7) != addr[7]) {
      Serial.println("CRC non valide!");
      return;
  }
  Serial.println("Debut capteur");
 
  // Indication du type de capteur
  switch (addr[0]) {
    case 0x10:
      Serial.println("  Chip = DS18S20");  // or old DS1820
      type_s = 1;
      break;
    case 0x28:
      Serial.println("  Chip = DS18B20");
      type_s = 0;
      break;
    case 0x22:
      Serial.println("  Chip = DS1822");
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  }
 
  if (started == false)
   { present = ds.reset();
     ds.select(addr);
     ds.write(0x4E);
     ds.write(0x4B);
     ds.write(0x46);
     ds.write(0x6f);
     started = true;
   }

  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end
 
  delay(1000);     // maybe 750ms is enough, maybe not
  // we might do a ds.depower() here, but the reset will take care of it.
 
  present = ds.reset();
  ds.select(addr);   
  ds.write(0xBE);         // Read Scratchpad

  Serial.print("  Data = ");
  Serial.print(present, HEX);
  Serial.print(" ");
  for ( i = 0; i < 9; i++) {           // we need 9 bytes
    data[i] = ds.read();
    Serial.print(data[i], HEX);
    Serial.print(" ");
  }
  Serial.print(" CRC=");
  Serial.print(OneWire::crc8(data, 8), HEX);
  Serial.println();
 
  // Convert the data to actual temperature
  // because the result is a 16 bit signed integer, it should
  // be stored to an "int16_t" type, which is always 16 bits
  // even when compiled on a 32 bit processor.
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) {
      // "count remain" gives full 12 bit resolution
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } else {
    byte cfg = (data[4] & 0x60);
    // at lower res, the low bits are undefined, so let's zero them
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
    //// default is 12 bit resolution, 750 ms conversion time
  }
  celsius = (float)raw / 16.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  }

Désolé, mais entre le premier post et maintenant, il y a eu des modifs, pas forcément heureuses.C'est pour éviter toute source de confusion (et les modifs par tâtonnement, avec le code source d'un ami, peuvent être prolifiques dans ce domaine) que poster votre code source actuel, dans son intégralité, VOUS serait fort utile.

Oui on bosse ensemble dessus ..

On a modifié le programme et nous n'avons plus d'erreur pour le "inf" mais dans la console un "inf" apparaît.


Pour le deuximème programme (celui-ci dessus), il m'affiche bien l'heure (malgré le 1h de moins), mais il m'indique "recherche du capteur" pourquoi? Celui-ci est bien branché pourtant (Le RTC et le DS18B20 sont mis sur un shield pour éviter les fils)

Pour l'amour de dieu, personne ne peut suivre votre historique sans risque de graves troubles neurologiques;
postez le code tel qu'il est et décrivez les soucis qui restent. pourquoi faire compliqué quand on peut faire simple)