Fatal error: WConstants.h: No such file or directory

Molto strano …
… quella librerie inizia, correttamente con:

#if ARDUINO >= 100
#include <Arduino.h> 
#else
#include <WProgram.h> 
#endif
...

… quindi, dato che sicuramemte stai usando una versione di Arduino IDE aggiornata, NON dovrebbe andare a pescare le cose che erano relative a WProgram.h come WConstants.h che riporti … ::slight_smile:

Includi qualche cosa d’altro che hai scaricato ?

Guglielmo

Fai una cosa, copia/incolla la parte di errore della compilazione che, sicuramente, dice dove quel file viene cercato ... ::slight_smile:

Guglielmo

L'errore è questo:

Arduino:1.8.13 (Mac OS X), Scheda:"Arduino Uno"





/Applications/Arduino.app/Contents/Java/arduino-builder -dump-prefs -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -hardware /Users/ezio/Library/Arduino15/packages -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/ezio/Library/Arduino15/packages -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/ezio/Documents/Arduino/libraries -fqbn=arduino:avr:uno -ide-version=10813 -build-path /var/folders/sf/6l3wtqc949v0lvxt3030y21m0000gn/T/arduino_build_602542 -warnings=all -build-cache /var/folders/sf/6l3wtqc949v0lvxt3030y21m0000gn/T/arduino_cache_118691 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.arduinoOTA.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/Users/ezio/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=/Users/ezio/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -verbose /Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino


/Applications/Arduino.app/Contents/Java/arduino-builder -compile -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -hardware /Users/ezio/Library/Arduino15/packages -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/ezio/Library/Arduino15/packages -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/ezio/Documents/Arduino/libraries -fqbn=arduino:avr:uno -ide-version=10813 -build-path /var/folders/sf/6l3wtqc949v0lvxt3030y21m0000gn/T/arduino_build_602542 -warnings=all -build-cache /var/folders/sf/6l3wtqc949v0lvxt3030y21m0000gn/T/arduino_cache_118691 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7 -prefs=runtime.tools.arduinoOTA.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=/Applications/Arduino.app/Contents/Java/hardware/tools/avr -prefs=runtime.tools.avrdude.path=/Users/ezio/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=/Users/ezio/Library/Arduino15/packages/arduino/tools/avrdude/6.3.0-arduino17 -verbose /Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino


Using board 'uno' from platform in folder: /Applications/Arduino.app/Contents/Java/hardware/arduino/avr


Using core 'arduino' from platform in folder: /Applications/Arduino.app/Contents/Java/hardware/arduino/avr


Detecting libraries used...


/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/standard /var/folders/sf/6l3wtqc949v0lvxt3030y21m0000gn/T/arduino_build_602542/sketch/sketch_jan25e.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE


Alternatives for DCF77.h: [DCF77-1.0.0@1.0.0 DCF77]


ResolveLibrary(DCF77.h)


  -> candidates: [DCF77-1.0.0@1.0.0 DCF77]


/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/standard -I/Users/ezio/Documents/Arduino/libraries/DCF77 /var/folders/sf/6l3wtqc949v0lvxt3030y21m0000gn/T/arduino_build_602542/sketch/sketch_jan25e.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE


/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/bin/avr-g++ -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10813 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino -I/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/standard -I/Users/ezio/Documents/Arduino/libraries/DCF77 /Users/ezio/Documents/Arduino/libraries/DCF77/DCF77.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE


Alternatives for WConstants.h: []/Users/ezio/Documents/Arduino/libraries/DCF77/DCF77.cpp:20:10: fatal error: WConstants.h: No such file or directory





 #include "WConstants.h"


ResolveLibrary(WConstants.h)          ^~~~~~~~~~~~~~





compilation terminated.


  -> candidates: []


Più di una libreria trovata per "DCF77.h"


Usata: /Users/ezio/Documents/Arduino/libraries/DCF77


Non usata: /Users/ezio/Documents/Arduino/libraries/DCF77-1.0.0


Uso la libreria DCF77 nella cartella: /Users/ezio/Documents/Arduino/libraries/DCF77 (legacy)


exit status 1


Errore durante la compilazione per la scheda Arduino Uno.

La versione di Arduino è la 1.8.13
Saluti

LelloGi

La libreria incriminata è quella che si trova qui:

/Users/ezio/Documents/Arduino/libraries/DCF77/

... e NON mi sembra che sia quella che hai indicato tu perché, in quella, alla linea dell'errore, c'è tutt'altro.

Sicuro di NON avere più librerie relative al DFC77 ? ? ? Fai uno zip della cartella che ti ho indicato e allegalo che vediamo che codice c'è dentro ... ::slight_smile:

Guglielmo

Ho allegato la libreria che mi hai chiesto.
Anche io ho notato che c’era l’avviso di librerie doppie, però mi sono focalizzato sull’errore “WConstants.h”.

LelloGi

DCF77.zip (82 KB)

Infatti ... NON è quella di cui hai messo il link ...
... cancella quella cartella, che contiene una libreria vecchissima di 15 anni fa, e riporva a compilare, magari va a prendere quella buona.

Se non va, tocca che cerchi anche l'altra cartella, cancelli pure quella e poi installi SOLO quella del link che hai messo prima.

Guglielmo

gpb01:
Se non va, tocca che cerchi anche l'altra cartella, cancelli pure quella e poi installi SOLO quella del link che hai messo prima.

Quella che trovo nel Playground di Arduino o quella su: GitHub - thijse/Arduino-DCF77: Efficient and complete DCF77 library for Arduino ?

LelloGi

Scusa, ma se quel progetto è basato su quella del link … metti quella del link non ti pare ? :wink:

Guglielmo

Adesso va un po meglio, è cambiato l’errore:

Arduino:1.8.13 (Mac OS X), Scheda:"Arduino Uno"

sketch_jan25e:8:17: error: 'Utils' is not a namespace-name
 using namespace Utils;
                 ^~~~~
sketch_jan25e:8:22: error: expected namespace-name before ';' token
 using namespace Utils;
                      ^
sketch_jan25e:14:8: error: 'time_t time' redeclared as different kind of symbol
 time_t time;
        ^~~~
In file included from /Users/ezio/Documents/Arduino/libraries/DCF77-1.0.0/DCF77.h:9:0,
                 from /Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:6:
/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/time.h:122:21: note: previous declaration 'time_t time(time_t*)'
     time_t          time(time_t *timer);
                     ^~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino: In function 'void loop()':
sketch_jan25e:30:5: error: 'setTime' was not declared in this scope
     setTime(DCFtime);
     ^~~~~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:30:5: note: suggested alternative: 'isotime'
     setTime(DCFtime);
     ^~~~~~~
     isotime
sketch_jan25e:32:30: error: too many arguments to function 'void digitalClockDisplay()'
   digitalClockDisplay(DCFtime);
                              ^
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:35:6: note: declared here
 void digitalClockDisplay() {
      ^~~~~~~~~~~~~~~~~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino: In function 'void digitalClockDisplay()':
sketch_jan25e:36:16: error: 'hour' was not declared in this scope
   Serial.print(hour());
                ^~~~
sketch_jan25e:37:15: error: 'minute' was not declared in this scope
   printDigits(minute());
               ^~~~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:37:15: note: suggested alternative: 'init'
   printDigits(minute());
               ^~~~~~
               init
sketch_jan25e:38:15: error: 'second' was not declared in this scope
   printDigits(second());
               ^~~~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:38:15: note: suggested alternative: 'rewind'
   printDigits(second());
               ^~~~~~
               rewind
sketch_jan25e:39:37: error: 'day' was not declared in this scope
   Serial.print(" ");   Serial.print(day());
                                     ^~~
sketch_jan25e:40:37: error: 'month' was not declared in this scope
   Serial.print(" ");   Serial.print(month());
                                     ^~~~~
sketch_jan25e:41:37: error: 'year' was not declared in this scope
   Serial.print(" ");   Serial.print(year());
                                     ^~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:41:37: note: suggested alternative: 'char'
   Serial.print(" ");   Serial.print(year());
                                     ^~~~
                                     char
exit status 1
'Utils' is not a namespace-name

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

Lo sketch è molto semplice:

/*
   DCFSignal.ino - DCF77 debug Example
    https://www.forgani.com/electronic/dcf77-signal-with-arduino/
**/

#include <DCF77.h>
#include <Time.h>
using namespace Utils;

#define DCF_PIN 2         // Connection pin to DCF 77 device
#define DCF_INTERRUPT 0   // Interrupt number associated with pin
#define BLINK_PIN 13

time_t time;
DCF77 DCF = DCF77(DCF_PIN, DCF_INTERRUPT);

void setup() {
  Serial.begin(9600);
  pinMode(DCF_PIN, INPUT);
  pinMode(BLINK_PIN, OUTPUT);
  Serial.println("Waiting for DCF77 time ... ");
  DCF.Start();
}

void loop() {
  delay(1000);
  time_t DCFtime = DCF.getTime(); // Check if new DCF77 time is available
  if (DCFtime != 0) {
    Serial.println("Time is updated");
    setTime(DCFtime);
  }
  digitalClockDisplay(DCFtime);
}

void digitalClockDisplay() {
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");   Serial.print(day());
  Serial.print(" ");   Serial.print(month());
  Serial.print(" ");   Serial.print(year());
  Serial.println();
}

void printDigits(int digits) {
  // utility function for digital clock display: prints preceding colon and leading 0
  Serial.print(":");
  if (digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

Se commento la linea 8 “using monospace Utils”, l’errore passa alla linea 14 “time_t time;”.
Visto che lo sketch è pieno di errori, comincio a pensare fatti apposta, lascio perdere questo sketch e vedo di trovare qualcosa d’altro funzionante.
Saluti
LelloGi

Se commenti anche time_t time che succede?
Mi pare che non venga utilizzata quella variabile.

Ennesima schifezza che viene messa su internet … secondo me, chi ha scritto quel programma, manco lo ha provato dato che ci sono evidenti errori di sintassi …
… prova così:

/*
 * DCFSignal.ino - DCF77 debug Example
*/

#include <DCF77.h>
#include <Utility/Utils.h>
#include <Time.h>
using namespace Utils;
 
#define DCF_PIN 2         // Connection pin to DCF 77 device
#define DCF_INTERRUPT 0   // Interrupt number associated with pin
#define BLINK_PIN 13

time_t time;
DCF77 DCF = DCF77(DCF_PIN, DCF_INTERRUPT);
 
void setup() {
  Serial.begin(9600);
  pinMode(DCF_PIN, INPUT);
  pinMode(BLINK_PIN, OUTPUT);
  Serial.println("Waiting for DCF77 time ... ");
  DCF.Start();
}
 
void loop() {
 delay(1000);
 time_t DCFtime = DCF.getTime(); // Check if new DCF77 time is available
 if (DCFtime!=0) {
    Serial.println("Time is updated");
    setTime(DCFtime);
 }
 digitalClockDisplay();
}
 
void digitalClockDisplay(){
   Serial.print(hour());
   printDigits(minute());
   printDigits(second());
   Serial.print(" ");   Serial.print(day());
   Serial.print(" ");   Serial.print(month());
   Serial.print(" ");   Serial.print(year()); 
   Serial.println(); 
}
 
void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

… da un po’ di warning, ma sono trascurabili. Compilare compila:

Sketch uses 5892 bytes (18%) of program storage space. Maximum is 32256 bytes.
Global variables use 333 bytes (16%) of dynamic memory, leaving 1715 bytes for local variables. Maximum is 2048 bytes.

… che poi funzioni pure … è un’altro paio di maniche :smiley: :smiley: :smiley:

Guglielmo

Grazie per l'aiuto, ma sono sempre più convinto di passare ad altro.
Nella compilazione mi da una serie di errori che si può vedere da qui:

Arduino:1.8.13 (Mac OS X), Scheda:"Arduino Uno"
sketch_jan25e:15:8: error: 'time_t time' redeclared as different kind of symbol
 time_t time;
        ^~~~
In file included from /Users/ezio/Documents/Arduino/libraries/DCF77-1.0.0/DCF77.h:9:0,
                 from /Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:6:
/Users/ezio/Library/Arduino15/packages/arduino/tools/avr-gcc/7.3.0-atmel3.6.1-arduino7/avr/include/time.h:122:21: note: previous declaration 'time_t time(time_t*)'
     time_t          time(time_t *timer);
                     ^~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino: In function 'void loop()':
sketch_jan25e:31:5: error: 'setTime' was not declared in this scope
     setTime(DCFtime);
     ^~~~~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:31:5: note: suggested alternative: 'isotime'
     setTime(DCFtime);
     ^~~~~~~
     isotime
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino: In function 'void digitalClockDisplay()':
sketch_jan25e:37:17: error: 'hour' was not declared in this scope
    Serial.print(hour());
                 ^~~~
sketch_jan25e:38:16: error: 'minute' was not declared in this scope
    printDigits(minute());
                ^~~~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:38:16: note: suggested alternative: 'init'
    printDigits(minute());
                ^~~~~~
                init
sketch_jan25e:39:16: error: 'second' was not declared in this scope
    printDigits(second());
                ^~~~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:39:16: note: suggested alternative: 'rewind'
    printDigits(second());
                ^~~~~~
                rewind
sketch_jan25e:40:38: error: 'day' was not declared in this scope
    Serial.print(" ");   Serial.print(day());
                                      ^~~
sketch_jan25e:41:38: error: 'month' was not declared in this scope
    Serial.print(" ");   Serial.print(month());
                                      ^~~~~
sketch_jan25e:42:38: error: 'year' was not declared in this scope
    Serial.print(" ");   Serial.print(year());
                                      ^~~~
/Users/ezio/Desktop/sketch_jan25e/sketch_jan25e.ino:42:38: note: suggested alternative: 'char'
    Serial.print(" ");   Serial.print(year());
                                      ^~~~
                                      char
exit status 1
'time_t time' redeclared as different kind of symbol

Sketch abbandonato!
Non è la prima volta che trovo su internet sorgenti schifezza.
Saluti

LelloGi

No, se ti da quegli errori, potrai avere sempre problemi ... c'è casino sulla TUA installazione di Arduino con librerie duplicate e quant'altro ...
... che quel codice sia una "schifezza" è appurato, ma che quello che ti ho messo, come hai visto, compila senza errori è un fatto, per cui, ribadisco ... il problema è la tua installazione di Arduino che ritengo "corrotta" e con librerie duplicate che vanno in conflitto.

Guglielmo

gpb01:
No, se ti da quegli errori, potrai avere sempre problemi … c’è casino sulla TUA installazione di Arduino con librerie duplicate e quant’altro …

Provvedo ad installare tutto da zero.
Saluti
LelloGi

Suggerisco di usare la versione zip, scompattare in una cartella e in quella "creare" una cartella di nome portable.

speedyant:
Suggerisco di usare la versione zip, scompattare in una cartella e in quella "creare" una cartella di nome portable.

Per poi inserire i files scompattati e utilizzare l'applicazione Arduino direttamente li ?
LelloGi

Probabilmente la cartella scompattata si chiamera "arduino.1.8.13", con i file di arduino. Dentro alla cartella "arduino.1.8.13" si crea una cartella "portable".
Comunque un passo alla volta, prima scaricare la versione zip, scompattare e poi vediamo.
La risposta breve alla tua domanda é no, non vanno scompattati all'interno di "portable"

>LelloGi: scarichi la versione .zip del'IDE, la scompatti in una cartella dove puoi sia leggere che scrivere, all'interno della cartella appena scompattata (a cui ti consiglio di dare un nome univoco che ti permette di riconoscerla, esempio: "Arduino 1.8.13 Portable") crei tu a mano una nuova cartella di nome "portable".

In questo modo hai creato una versione di Arduino "sandboxed" ovvero isolata da tutto il resto che è sul tuo computer e, tutte le librerie e i core che installerai, saranno SOLO all'interno di tale installazione e NON in comune con nulla d'altro (... questo permette anche di avere più installazioni tutte separate tra loro, ciscuna con il suo nome, le sue librerie ed i suoi core).

Appena lancerai l'eseguibile Arduino che è nell'installazione, esso si accorgerà di tale cartella e, automaticamente, da solo, creerà all'interno della "portable" un'altra serie di cartelle di cui, fondamentali, sono la "packages", dove vengono installati i nuovi core che scarichi (se li scarichi, altrimenti tale cartella probabilmente non viene nemmeno creata) e la "sketchbook". All'interno di quest'ultima verrà creata una ulteriore cartella "libraries" dove verranno messe le librerie che installi con il "library manager" del IDE o dove dovrai mettere a mano quelle poche librerie che NON sono presenti nel suddetto "library manager".

I programmi veri e propri puoi continuare a tenerli dove ti pare ... di base vengono cercati all'interno della installazione "sandboxed" nella cartella "portable/sketchbook", ma, ripeto, puoi tenerli dove ti pare ... io li tengo in una cartella su dropbox per ragioni di backup e di versioning. :wink:

Guglielmo

gpb01:
I programmi veri e propri puoi continuare a tenerli dove ti pare ... di base vengono cercati all'interno della installazione "sandboxed" nella cartella "portable/sketchbook", ma, ripeto, puoi tenerli dove ti pare ... io li tengo in una cartella su dropbox per ragioni di backup e di versioning. :wink:

Guglielmo

Buona idea, non ci avevo pensato.
Tutto chiaro!
LelloGi

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.