[RISOLTO] Lettura temperatura con sensore DS18b20

Salve a tutti ho seguito questo tutorial Pagina ingresso sensore DS18B20 ma in fase di compilazione il programma mi dà errore. Ho provato a riscaricare le librerie ma non funziona. Utilizzo la versione 1.0.4 di IDE.

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

Qualcuno mi può aiutare?

temo che sia un problema di versione di IDE; non ci vuole molto, prova a scaricare IDE 0022 o 0023, dovrebbe funzionare; poi leggi qui

Per quello specifico errore ti basta sostituire l'istruzione #include <WConstants.h> con :

#if defined(ARDUINO) && ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#endif

Per quello specifico errore ti basta sostituire l'istruzione #include <WConstants.h> con :
Code:
#if defined(ARDUINO) && ARDUINO >= 100
#include <Arduino.h>
#else
#include <WProgram.h>
#endif

Ho provato così ma l'errore rimane tale e ho anche provato a scaricare le versioni 0022 e 0023 e mi dà questo errore:

/WProgram.h:6,
                 from sketch_jun13a.cpp:11:

Allega il tuo sketch.
E anche l'errore completo. Dove lo segnala l'errore, in quale libreria? Quell'esempio al link include ben 3 librerie.

è un problema della libreria onewire che va aggiornata
se mi scrivi email ti mando programma ds18b20+librerie
taraschi_nicola@libero.it

#include <OneWire.h>
#include <DallasTemperature.h>


 
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
 
// Setup a oneWire instance to communicate with any OneWire devices 
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
 
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
 
void setup(void)
{
  // start serial port
  Serial.begin(9600);
  Serial.println("Dallas Temperature IC Control Library Demo");

  // Start up the library
  sensors.begin();
}
 
 
void loop(void)
{
  // call sensors.requestTemperatures() to issue a global temperature
  // request to all devices on the bus
  Serial.print(" Requesting temperatures...");
  sensors.requestTemperatures(); // Send the command to get temperatures
  Serial.println("DONE");

  Serial.print("Temperature for Device 1 is: ");
  Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"? 
    // You can have more than one IC on the same bus. 
    // 0 refers to the first IC on the wire
 
}

e qui c'è l'errore

In file included from C:\Users\utente\Desktop\arduino-0022\arduino-0022\hardware\arduino\cores\arduino/WProgram.h:6,
                 from sketch_jun13a.cpp:11:
c:/users/utente/desktop/arduino-0022/arduino-0022/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected unqualified-id before 'double'
c:/users/utente/desktop/arduino-0022/arduino-0022/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected `)' before 'double'
c:/users/utente/desktop/arduino-0022/arduino-0022/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected `)' before 'double'

Non sempre basta modifica la lib per caricare Arduino.h al posto di WProgram.h per risolvere il problema.
In questo caso serve proprio la OneWire aggiornata.

Che si trova con una semplice ricerca su Internet....
http://www.pjrc.com/teensy/td_libs_OneWire.html

già provato con la libreria aggiornata ma il problema è sempre lo stesso..

Ho compilato ora il tuo sketch sulla mia IDE 1.0.5:

Dimensione del file binario dello sketch: 7.196 bytes (su un massimo di 32.256 bytes)

Poi tu dici di usare l'IDE 1.0.4:

davix10:
Utilizzo la versione 1.0.4 di IDE.

Mentre posti l'errore dell'IDE 0022:

davix10:
e qui c'è l'errore

In file included from C:\Users\utente\Desktop\arduino-0022\arduino-0022\hardware\arduino\cores\arduino/WProgram.h:6,

from sketch_jun13a.cpp:11:
[/quote]
Con cosa stai compilando in questo momento????  :wink:

Si lo so ma ho provato a scaricarne un po' per vedere se era un problema di IDE. Come fa a funzionarti con la IDE 1.0.5?
A me dà questo errore

C:\Program Files (x86)\Arduino\libraries\DallasTemperature\DallasTemperature.cpp:9:26: error: WConstants.h: No such file or directory

Allora è la libreria Dallas a non essere allineata all'IDE 1.0.x :smiley:

Quella che ho io dentro al file .cpp c'e':
#if ARDUINO >= 100
#include "Arduino.h"
#else
extern "C" {
#include "WConstants.h"
}
#endif

e in testata c'e' scritto:
Version 3.7.2 modified on Dec 6, 2011 to support Arduino 1.0
// See Includes...
// Modified by Jordan Hochenbaum
Presa qui: GitHub - milesburton/Arduino-Temperature-Control-Library: Arduino Temperature Library

Che versione hai ?

Avevo una versione più vecchia era quello il problema ora ho scaricato quella nuova e tutto funziona!!! Grazie!! :slight_smile:

Per la prossima volta: nel tuo primo post metti l'errore ma non completo.
Se fosse stato completo avremmo visto che era nella DallasTemperature.cpp e ti avremmo indirizzato meglio subito.
Un favore, sul tuo primo post, puoi modificare il titolo aggiungendo [Risolto] ?

Ok fatto e grazie ancora! :slight_smile:

@david:
ti avevo già spiegato di procurarti l'ultima versione della lib perché la modifica con l'inclusione di Arduino.h non risolve sempre il problema:

leo72:
Non sempre basta modifica la lib per caricare Arduino.h al posto di WProgram.h per risolvere il problema.
In questo caso serve proprio la OneWire aggiornata.

Che si trova con una semplice ricerca su Internet....
OneWire Arduino Library, connecting 1-wire devices (DS18S20, etc) to Teensy