Errore RTCDateTime' does not name a type

Stò provando uno sketch di un orologio con Arduino NANO, un DS3231 e un display 4x7 segmenti.
Mi succede una cosa strana usando le medesime librerie sia un pc con Windows 10 che un mac OS Catalina.
Sul MAC lo compilo regolarmente e lo carico funziona regolarmente.
Se invece lo compilo con Windows10 mi da tutta una serie di errori:

Arduino:1.8.19 (Windows 10), Scheda:"Arduino Nano, ATmega328P"

DS3231_orologio_7digit:23:3: error: 'RTCDateTime' does not name a type; did you mean 'DateTime'?

   RTCDateTime dt;

   ^~~~~~~~~~~

   DateTime

DS3231_orologio_7digit:24:10: error: 'DS3231 clock' redeclared as different kind of symbol

   DS3231 clock;

          ^~~~~

In file included from C:\Users\egimi\Documents\Arduino\libraries\DS3231-1.1.2/DS3231.h:28:0,

                 from C:\Users\egimi\Desktop\DS3231_orologio_7digit\DS3231_orologio_7digit.ino:13:

c:\users\egimi\appdata\local\arduino15\packages\arduino\tools\avr-gcc\7.3.0-atmel3.6.1-arduino7\avr\include\time.h:164:20: note: previous declaration 'clock_t clock()'

     extern clock_t clock(void);

                    ^~~~~

C:\Users\egimi\Desktop\DS3231_orologio_7digit\DS3231_orologio_7digit.ino: In function 'void setup()':

DS3231_orologio_7digit:33:11: error: request for member 'begin' in 'clock', which is of non-class type 'clock_t() {aka long unsigned int()}'

     clock.begin();

           ^~~~~

DS3231_orologio_7digit:34:11: error: request for member 'enable32kHz' in 'clock', which is of non-class type 'clock_t() {aka long unsigned int()}'

     clock.enable32kHz(false);

           ^~~~~~~~~~~

DS3231_orologio_7digit:35:11: error: request for member 'setOutput' in 'clock', which is of non-class type 'clock_t() {aka long unsigned int()}'

     clock.setOutput(DS3231_1HZ);

           ^~~~~~~~~

DS3231_orologio_7digit:35:21: error: 'DS3231_1HZ' was not declared in this scope

     clock.setOutput(DS3231_1HZ);

                     ^~~~~~~~~~

C:\Users\egimi\Desktop\DS3231_orologio_7digit\DS3231_orologio_7digit.ino:35:21: note: suggested alternative: 'DS3231_h'

     clock.setOutput(DS3231_1HZ);

                     ^~~~~~~~~~

                     DS3231_h

DS3231_orologio_7digit:36:11: error: request for member 'enableOutput' in 'clock', which is of non-class type 'clock_t() {aka long unsigned int()}'

     clock.enableOutput(true);

           ^~~~~~~~~~~~

C:\Users\egimi\Desktop\DS3231_orologio_7digit\DS3231_orologio_7digit.ino: In function 'void loop()':

DS3231_orologio_7digit:43:11: error: request for member 'enable32kHz' in 'clock', which is of non-class type 'clock_t() {aka long unsigned int()}'

     clock.enable32kHz(state);

           ^~~~~~~~~~~

C:\Users\egimi\Desktop\DS3231_orologio_7digit\DS3231_orologio_7digit.ino: In function 'void Temperatura()':

DS3231_orologio_7digit:66:22: error: request for member 'readTemperature' in 'clock', which is of non-class type 'clock_t() {aka long unsigned int()}'

     int temp = clock.readTemperature();

                      ^~~~~~~~~~~~~~~

exit status 1

'RTCDateTime' does not name a type; did you mean 'DateTime'?

Il sorgente è questo:

  /************** Funziona! ******************
  * 4 x 7digit
  * 2 febbraio 2024
  * Scheda: "Arduino NANO"
  * Processore:"ATMega328P"
  * Porta: "/dev/cu.chusbserial1410" su Windows
  * Arduino NANO: SDA(A4) pin 27, SCL(A5) pin 28
  * Visualizza ore e minuti
  * Visualizza la temperatura
  * Aggiunto led 1Hz
  ********************************************/
  #include <Wire.h>
  #include <DS3231.h>
  #include "LedControl.h"
  
  #define DS3231_I2C_ID 0x68
  
  boolean state;
  int Secondi = 0;
  int Minuti =0;
  int Ora = 0;
  
  RTCDateTime dt;
  DS3231 clock;
  LedControl lc=LedControl(12,11,10,1);
  
  void setup() {
    Serial.begin(9600);
    Wire.begin();
    lc.shutdown(0,false);
    lc.setIntensity(0,8);  // intensità digit
    lc.clearDisplay(0); // spegne i display
    clock.begin();
    clock.enable32kHz(false);
    clock.setOutput(DS3231_1HZ);
    clock.enableOutput(true);  
    }
  
  void loop() {
    Orario();
    Visualizza(Ora, Minuti);
    delay(5000);
    clock.enable32kHz(state);
    state = !state; 
    Temperatura();
    delay(2000);
  }
  
  void Orario() {
    Wire.beginTransmission(DS3231_I2C_ID);
    Wire.write(0x0);  
    Wire.endTransmission();
    Wire.requestFrom(DS3231_I2C_ID, 3);  // legge 3 bytes
  
    Secondi = bcd2dec(Wire.read() & 0b1111111);
    Minuti = bcd2dec(Wire.read() & 0b1111111);
    Ora = bcd2dec(Wire.read() & 0b00111111);
    
    //Serial.print(" ");
    //Serial.print(Ora);
    //Serial.print(":");
    //Serial.println(Minuti);
   }
  
  void Temperatura(){
    int temp = clock.readTemperature();
    //Serial.print("  ");
    //Serial.print(temp);
    //Serial.println("°C");
    lc.clearDisplay(0); 
    int resultTd = temp/10; // ottengo la decina
    int resultTu = temp - (resultTd*10); // ottengo l'unità
    lc.setDigit(0,3,resultTu,true);  // mimuti unità
    lc.setDigit(0,2,resultTd,true);  // minuti decina
  }
  
  void Visualizza(int Ora, int Minuti){
      int resultMd = Minuti/10; // ottengo la decina
      int resultMu = Minuti - (resultMd*10); // ottengo la sola unità
      lc.setDigit(0,3,resultMu,true);  // mimuti unità
      lc.setDigit(0,2,resultMd,true);  // minuti decina
      
      int resultHd = Ora/10; // ottengo la decina
      int resultHu = Ora - (resultHd*10); // ottengo la sola unità
      lc.setDigit(0,1,resultHu,false);  // ore unità
      lc.setDigit(0,0,resultHd,false);  // ore decina
  }
   
  // Converte da (BCD) a numero decimale
  byte bcd2dec(byte val) {
    return ((val/16*10) + (val%16));
   }

Ho bisogno di un aiuto

EzioGi

Ho avuto problemi con una libreria completamente diversa, ma ho scoperto che erano dovuti all'eccessiva lunghezza del percorso, che mi sembra parecchio lungo anche nel tuo caso. Ho risolto mettendo la cartella dell'IDE direttamente in C:\

Ok, ci provo anche io.
Grazie del consiglio.

EzioGi