PlatformIO Community

Wire.h is missing and cause a simple program to not compile

So I follow this code in http://www.dfrobot.com/wiki/index.php?title=Arduino_LCD_KeyPad_Shield_(SKU:_DFR0009):

 //Sample using LiquidCrystal library
#include <Arduino.h>
#include <LiquidCrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons
Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor 
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 250)  return btnUP; 
 if (adc_key_in < 450)  return btnDOWN; 
 if (adc_key_in < 650)  return btnLEFT; 
 if (adc_key_in < 850)  return btnSELECT;  

 // For V1.0 comment the other threshold and use the one below:
/*
 if (adc_key_in < 50)   return btnRIGHT;  
 if (adc_key_in < 195)  return btnUP; 
 if (adc_key_in < 380)  return btnDOWN; 
 if (adc_key_in < 555)  return btnLEFT; 
 if (adc_key_in < 790)  return btnSELECT;   
*/


 return btnNONE;  // when all others fail, return this...
}

void setup()
{
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("Push the buttons"); // print a simple message
}
 
void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 lcd.print(millis()/1000);      // display seconds elapsed since power-up


 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons

 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
     {
     lcd.print("RIGHT ");
     break;
     }
   case btnLEFT:
     {
     lcd.print("LEFT   ");
     break;
     }
   case btnUP:
     {
     lcd.print("UP    ");
     break;
     }
   case btnDOWN:
     {
     lcd.print("DOWN  ");
     break;
     }
   case btnSELECT:
     {
     lcd.print("SELECT");
     break;
     }
     case btnNONE:
     {
     lcd.print("NONE  ");
     break;
     }
 }

}

then I’d installed LiquidCrystal library through pio lib install 136, then I tried to compile it, and compiler complains about wire.h not found

.pioenvs/uno/LiquidCrystal_ID136/I2CIO.cpp:42:21: fatal error: Wire.h: No such file or directory

Then I tried to search in pio lib search 'wire' --framework='arduino' and I found nothing that is related to wire.h. What should I do now?

Hi @minecraft2048!

Could you please try to add this line to your sketch before #include <LiquidCrystal.h>?

#include <Wire.h>
2 Likes

It works! Thank you, and now how do I mark this as solved?

You can place [solved] prefix before a subject.

P.S: This issue is fixed in PlatformIO 3.0 (is not released yet)

I’m having this issue again right now with ESP8266 and the DHT sensor library.

What’s the full platformio.ini and code?

1 Like

Code here: https://github.com/Pwuts/whiskeygrid/tree/master/DHT2MQTT

Full error:

In file included from .pio\libdeps\default\Adafruit BusIO_ID6214/Adafruit_BusIO_Register.h:1:0,
                 from .pio\libdeps\default\Adafruit BusIO_ID6214\Adafruit_BusIO_Register.cpp:1:
.pio\libdeps\default\Adafruit BusIO_ID6214/Adafruit_I2CDevice.h:1:18: fatal error: Wire.h: No such file or directory

**************************************************************
* Looking for Wire.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Wire.h"
* Web  > https://platformio.org/lib/search?query=header:Wire.h
*
**************************************************************

 #include <Wire.h>
                  ^
compilation terminated.
*** [.pio\build\default\lib8a5\Adafruit BusIO_ID6214\Adafruit_BusIO_Register.cpp.o] Error 1
In file included from .pio\libdeps\default\Adafruit BusIO_ID6214\Adafruit_SPIDevice.cpp:1:0:
.pio\libdeps\default\Adafruit BusIO_ID6214/Adafruit_SPIDevice.h:1:17: fatal error: SPI.h: No such file or directory

*************************************************************
* Looking for SPI.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:SPI.h"
* Web  > https://platformio.org/lib/search?query=header:SPI.h
*
*************************************************************

 #include <SPI.h>
                 ^
compilation terminated.
In file included from .pio\libdeps\default\Adafruit BusIO_ID6214\Adafruit_I2CDevice.cpp:1:0:
.pio\libdeps\default\Adafruit BusIO_ID6214/Adafruit_I2CDevice.h:1:18: fatal error: Wire.h: No such file or directory

**************************************************************
* Looking for Wire.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Wire.h"
* Web  > https://platformio.org/lib/search?query=header:Wire.h
*
**************************************************************

 #include <Wire.h>
                  ^
compilation terminated.
*** [.pio\build\default\lib8a5\Adafruit BusIO_ID6214\Adafruit_SPIDevice.cpp.o] Error 1
*** [.pio\build\default\lib8a5\Adafruit BusIO_ID6214\Adafruit_I2CDevice.cpp.o] Error 1
.pio\libdeps\default\Adafruit ADXL343_ID6117\Adafruit_ADXL343.cpp:29:18: fatal error: Wire.h: No such file or directory

**************************************************************
* Looking for Wire.h dependency? Check our library registry!
*
* CLI  > platformio lib search "header:Wire.h"
* Web  > https://platformio.org/lib/search?query=header:Wire.h
*
**************************************************************

 #include <Wire.h>
                  ^
compilation terminated.
*** [.pio\build\default\libf6a\Adafruit ADXL343_ID6117\Adafruit_ADXL343.cpp.o] Error 1
============================================= [FAILED] Took 8.34 seconds =============================================
The terminal process terminated with exit code: 1

The error goes away when I include <Wire.h> and <SPI.h> manually before <DHT.h>, which I have done in the version in the repository.

1 Like

I had the same problem. By adding Wire and SPI into my platform.io I got it to compile:
lib_deps =
Wire
SPI
But then I got stuck on other issues.

1 Like

This worked for me using a Teensy2.0++