Go Down

Topic: WProgram.h: No such file or directory (Read 236976 times) previous topic - next topic


I want to download MAX6675 library.But I'm getting the following error:

In file included from Single_Temp.pde:6:
C:\Users\salim\Documents\Arduino\libraries\max6675arduinolibrary/MAX6675.h:9:22: error: WProgram.h: No such file or directory
Single_Temp.pde:21:4: error: #else without #if
Single_Temp.pde:23:4: error: #endif without #if
Single_Temp:11: error: conflicting declaration 'int SCK'
C:\Program Files\arduino-1.0.3\hardware\arduino\variants\mega/pins_arduino.h:38: error: 'SCK' has a previous declaration as 'const uint8_t SCK'
Single_Temp:19: error: 'CS0' was not declared in this scope

How I can fix this problem?


You have to go into the .h and .cpp files and change "WProgram.h" to Arduino.h


I tried, but nothing can be changed


I tried, but nothing can be changed
Then you didn't try hard enough, sorry to say. Do you have Notepad or some rendition of it? Try to download Notepad++ notepad-plus-plus.org/

Once you have notepad, go to your library folder, find the library your using and open the .h and .cpp file in notepad.


I've tried everything.Please help the library users


Were you able to open the .h and .cpp files? Did you change the WProgram.h to Arduino.h? Did you save the files and reset the program?

What exactly did you do, when you say everything? Maybe attach the two codes below, so I can see what you have done.


Feb 08, 2013, 04:43 pm Last Edit: Feb 08, 2013, 10:49 pm by Nick Gammon Reason: 1
i  fixed this problem but This time I'm getting the following error:

Single_Temp:19: error: 'MAX6675' does not name a type
Single_Temp.pde: In function 'void loop()':
Single_Temp:31: error: 'temp0' was not declared in this scope

.cpp file:

Code: [Select]

 MAX6675.cpp - Library for reading temperature from a MAX6675.
 Created by Ryan McLaughlin <ryanjmclaughlin@gmail.com>

#include <Arduino.h>
#include <MAX6675.h>

MAX6675::MAX6675(int CS_pin, int SO_pin, int SCK_pin, int units, float error)
 pinMode(CS_pin, OUTPUT);
 pinMode(SO_pin, INPUT);
 pinMode(SCK_pin, OUTPUT);
 digitalWrite(CS_pin, HIGH);
 _CS_pin = CS_pin;
 _SO_pin = SO_pin;
 _SCK_pin = SCK_pin;
 _units = units;
 _error = error;

float MAX6675::read_temp(int samples)
 int value = 0;
 int error_tc = 0;
 float temp = 0;
 for (int i=samples; i>0; i--){

   digitalWrite(_CS_pin,LOW); // Enable device

   /* Cycle the clock for dummy bit 15 */

   /* Read bits 14-3 from MAX6675 for the Temp
      Loop for each bit reading the value and
      storing the final value in 'temp'
   for (int i=11; i>=0; i--){
     digitalWrite(_SCK_pin,HIGH);  // Set Clock to HIGH
     value += digitalRead(_SO_pin) << i;  // Read data and add it to our variable
     digitalWrite(_SCK_pin,LOW);  // Set Clock to LOW
   /* Read the TC Input inp to check for TC Errors */
   digitalWrite(_SCK_pin,HIGH); // Set Clock to HIGH
   error_tc = digitalRead(_SO_pin); // Read data
   digitalWrite(_SCK_pin,LOW);  // Set Clock to LOW
   digitalWrite(_CS_pin, HIGH); //Disable Device
 value = value/samples;  // Divide the value by the number of samples to get the average
    Keep in mind that the temp that was just read is on the digital scale
    from 0ËšC to 1023.75ËšC at a resolution of 2^12.  We now need to convert
    to an actual readable temperature (this drove me nuts until I figured
    this out!).  Now multiply by 0.25.  I tried to avoid float math but
    it is tough to do a good conversion to ËšF.  THe final value is converted
    to an int and returned at x10 power.
 value = value + _error;                  // Insert the calibration error value
 if(_units == 0) {                        // Request temp in ËšF
   temp = ((value*0.25) * (9.0/5.0)) + 32.0;   // Convert value to ËšF (ensure proper floats!)
 } else if(_units == 1) {                  // Request temp in ËšC
   temp = (value*0.25);                  // Multiply the value by 0.25 to get temp in ËšC
 /* Output -1 if there is a TC error, otherwise return 'temp' */
 if(error_tc != 0) {
   return -1;
 } else {
   return temp;

thanks for your helps...

Moderator edit: [code] ... [/code] tags added. (Nick Gammon)



In MAX6675.h, I changed "WProgram.h" to "Arduino.h"
In MAX6675.cpp, I changed "WProgram.h" to "Arduino.h" (or you can delete the #include completely)

In the "read_temp" example, I changed
Code: [Select]
int SCKpin = 13;             // SCK pin of MAX6675
int units = 2;            // Units to readout temp (0 = raw, 1 = ?C, 2 = ?F)
float temperature = 0.0;  // Temperature output variable

// Initialize the MAX6675 Library for our chip
MAX6675 temp(CS,SO,SCKpin,units);

and I got the error message
Binary sketch size: 5264 bytes (of a 14336 byte maximum)

(Compiling on 1.0 for a 2009)

OP, please use code tags when posting code.


i'm sorry awol. I didn't know. Can we solve this problem?


Feb 08, 2013, 05:05 pm Last Edit: Feb 08, 2013, 05:08 pm by AWOL Reason: 1
Yes, I just told you in the PM, we can solve this problem.
But only when you post your sketch in code tags on the forum, plus the exact error message you're getting.
I don't do PM help-desk.



I want to use max6675 library but ? have compile error.
this error:

In file included from Single_Temp.ino:6:
C:\Users\f\Documents\Arduino\libraries\max66library/MAX6675.h:9:22: error: WProgram.h: No such file or directory

Can you help me?


Please post technical questions on the forum, not by personal message. Thanks!

More info: http://www.gammon.com.au/electronics


Please do not cross-post. This wastes time and resources as people attempt to answer your question on multiple threads.

Threads merged.

- Moderator
Please post technical questions on the forum, not by personal message. Thanks!

More info: http://www.gammon.com.au/electronics

Go Up