Max6675.cpp fatal error: util/delay.h: No such file or directory compilation terminated

Hello

I moved to Arduino IDE 2.0 and i'm getting this error

Board is ESP32

c:\Users\Utilisateur\Documents\Arduino\libraries\MAX6675_library\max6675.cpp:9:24: fatal error: util/delay.h: No such file or directory
compilation terminated.


I read that the *delay.h* was for AVR processor.  How can I resolve this problem?

#include "max6675.h"
 
int thermoDO = 21;
int thermoCS = 19;
int thermoCLK =18;
 
MAX6675 thermocouple(thermoCLK, thermoCS, thermoDO);
 
void setup()
{
Serial.begin(115200);
Serial.println("MAX6675 test");
delay(2000);
}
 
void loop()
{
// basic readout test, just print the current temp
 
Serial.print("C = ");
Serial.print(thermocouple.readCelsius());
Serial.print("     F = ");
Serial.println(thermocouple.readFahrenheit());
 
delay(2000);
}

Any help appreciated

Martin

Is there anything that leads you to think the problem is related to you changing from one Arduino IDE version to another?

Can't say what has changed.

I know that the code for this thermocouple was working and running few month ago. Did not play with this sensor since then.

I installed the new IDE few weeks ago. I was able to compile other code with IDE version 2.0. I got the problem when running the exemple for the MAX6675 thermocouple exemple.

I opened the MAX6675.cpp and replaced the line. Same problem
#elif defined(ESP8266)
for
#elif defined(ESP32)

#elif defined(ESP8266)
> // this library is public domain. enjoy!
// www.ladyada.net/learn/sensors/thermocouple


#ifdef __AVR
  #include <avr/pgmspace.h>
**#elif defined(ESP8266)**
  #include <pgmspace.h>
#endif
#include <util/delay.h>
#include <stdlib.h>
#include "max6675.h"

MAX6675::MAX6675(int8_t SCLK, int8_t CS, int8_t MISO) {
  sclk = SCLK;
  cs = CS;
  miso = MISO;

  //define pin modes
  pinMode(cs, OUTPUT);
  pinMode(sclk, OUTPUT); 
  pinMode(miso, INPUT);

  digitalWrite(cs, HIGH);
}
double MAX6675::readCelsius(void) {

  uint16_t v;

  digitalWrite(cs, LOW);
  _delay_ms(1);

  v = spiread();
  v <<= 8;
  v |= spiread();

  digitalWrite(cs, HIGH);

  if (v & 0x4) {
    // uh oh, no thermocouple attached!
    return NAN; 
    //return -100;
  }

  v >>= 3;

  return v*0.25;
}

double MAX6675::readFahrenheit(void) {
  return readCelsius() * 9.0/5.0 + 32;
}

byte MAX6675::spiread(void) { 
  int i;
  byte d = 0;

  for (i=7; i>=0; i--)
  {
    digitalWrite(sclk, LOW);
    _delay_ms(1);
    if (digitalRead(miso)) {
      //set the bit to 0 no matter what
      d |= (1 << i);
    }

    digitalWrite(sclk, HIGH);
    _delay_ms(1);
  }

  return d;
}

I can see you are using an outdated version of the MAX6675 library, which is missing this important change:

Please follow these instructions to update to the latest version of the library:

  1. Select Sketch > Include Library > Manage Libraries... from the Arduino IDE menus to open the "Boards Manager" view in the left side panel.

  2. In the "Filter your search" field, type max6675 library

  3. Scroll down through the list of libraries until you see "MAX6675 library by Adafruit". Click on it.

  4. Select "1.1.0" from the dropdown version menu.

  5. Click the INSTALL button.

  6. You will now get a dialog asking:

    Would you like to install all the missing dependencies?

    Click the Install all button.

  7. Wait for the installation to finish.

  8. Select Sketch > Include Library > Manage Libraries... from the Arduino IDE menus to close the "Boards Manager" view in the left side panel.

Now try compiling your sketch again. It should work without the error. There will be no need to modify the library.

1 Like

@arjfca, your topic has been moved to a more suitable location on the forum. Installation and Troubleshooting is not for problems with (nor for advise on) your project :wink: See About the Installation & Troubleshooting category.

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