WProgram.h: No such file or directory

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.

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:

  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)

Where is your sketch?

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

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?

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?

Single_Temp.ino (1.41 KB)

MAX6675.h (428 Bytes)

MAX6675.cpp (2.39 KB)

Read this before posting a programming question

Read point 2.

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

Threads merged.

  • Moderator

Please read reply #8

Looks like the OP did not read or understand your reply, and decided to start a new thread in the hope that would help.

i tried to change WProgram.h to Arduino.h but i still get a error. i dont know, What else I need to change?

Nothing. In reply #8, I downloaded the library, did the changes, and recompiled the example. Did you save the files when you made the changes?

awol i tried reply #8 probably max6675.h have a error.Can you try to max6675.h

I'm sorry, I'm on my tablet now, and don't have access to the source I had earlier.