[Résolu] Connexion au moniteur série

Bonjour,

Pour tester mon RTC PCF8532 sur le shield adafruit datalogger, j'utilise le code exemple de la librairie RTClib.h (trouvable à cette adresse : Using the Real Time Clock | Adafruit Data Logger Shield | Adafruit Learning System ). Dans ce code, on utilise la liaison série pour regarder l'évolution du programme depuis le moniteur série mais le mien ne fonctionne pas...

voilà le code utilisé :

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
#include <Wire.h>
#include <RTClib.h>

RTC_PCF8523 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () {

  while (!Serial) {
    delay(1);  // for Leonardo/Micro/Zero
  }

  Serial.begin(57600);
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (! rtc.initialized()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
    // This line sets the RTC with an explicit date & time, for example to set
    // January 21, 2014 at 3am you would call:
    // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
  }
}

void loop () {
    DateTime now = rtc.now();
    
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.print(" since midnight 1/1/1970 = ");
    Serial.print(now.unixtime());
    Serial.print("s = ");
    Serial.print(now.unixtime() / 86400L);
    Serial.println("d");
    
    // calculate a date which is 7 days and 30 seconds into the future
    DateTime future (now + TimeSpan(7,12,30,6));
    
    Serial.print(" now + 7d + 30s: ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(3000);
}

J'utilise un Arduino M0 avec un câble mini USB et ça m'étonne que ça ne marche, puisque j'avais la même opération avec un Uno et ça marchait tout seul...
Si quelqu'un a une idée de ce qu'il se passe ?

Cdt,
Nathan

Bonjour,

Je le while (!Serial) doit être fait après l'initialisation avec Serial.begin()

J'avais déjà essayé de le mettre en commentaire et là essayé de le mettre apres mais mon moniteur série reste completement vide...

Essaie déjà d'afficher un message inconditionnel après le while (!Serial)
Serial.println("begin"); par exemple.

toujours rien, j'ai même rajouter un delay apres au cas ou ça s'efface rapidement mais rien du tout...

Dans la doc de la carte, il est indiqué:

Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data using the ATSAMD21G18 hardware serial capability. Note that on the M0, the SerialUSB class refers to USB (CDC) communication; for serial on pins 0 and 1, use the Serial5 class.

D'accord, c'était donc la class SerialUSB qu'il fallait utiliser !

Un grand merci à toi et bonne continuation :slight_smile: