Header file can not be included

I am trying to upload the sktech from theIRremote library,however before I can upload it a problem emerges saying that :#include errors detected. Please update your includePath. Squiggles are disabled for this translation unit (/home/mehdi/Documents/PlatformIO/Projects/RC-CAR/src/main.cpp). and the #include "PinDefinitionsAndMore.h" // Set IR_RECEIVE_PIN for different CPU's 53 line get highlighted in red ,also a message right below it saying cannot open source file "PinDefinitionsAndMore.h" .

for reference,here’s the code:`
TinyReceiver.cpp

Small memory footprint and no timer usage!

Receives IR protocol data of NEC protocol using pin change interrupts.
On complete received IR command the function handleReceivedIRData(uint16_t aAddress, uint8_t aCommand, uint8_t aFlags)
is called in Interrupt context but with interrupts being enabled to enable use of delay() etc.
!!!
Functions called in interrupt context should be running as short as possible,
so if you require longer action, save the data (address + command) and handle it in the main loop.
!!!
*

  • The FAST protocol is a proprietary modified JVC protocol without address, with parity and with a shorter header.

  • FAST Protocol characteristics:

    • Bit timing is like NEC or JVC
    • The header is shorter, 3156 vs. 12500
    • No address and 16 bit data, interpreted as 8 bit command and 8 bit inverted command,
      leading to a fixed protocol length of (6 + (16 * 3) + 1) * 526 = 55 * 526 = 28930 microseconds or 29 ms.
    • Repeats are sent as complete frames but in a 50 ms period / with a 21 ms distance.
  • Permission is hereby granted, free of charge, to any person obtaining a copy

  • of this software and associated documentation files (the “Software”), to deal

  • in the Software without restriction, including without limitation the rights

  • to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

  • copies of the Software, and to permit persons to whom the Software is furnished

  • to do so, subject to the following conditions:

  • The above copyright notice and this permission notice shall be included in all

  • copies or substantial portions of the Software.

  • THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,

  • INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A

  • PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT

  • HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF

  • CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE

  • OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


*/

#include <Arduino.h>

#include “PinDefinitionsAndMore.h” // Set IR_RECEIVE_PIN for different CPU’s

//#define DEBUG // to see if attachInterrupt is used
//#define TRACE // to see the state of the ISR state machine

/*

  • Protocol selection
    /
    //#define DISABLE_PARITY_CHECKS // Disable parity checks. Saves 48 bytes of program memory.
    //#define USE_EXTENDED_NEC_PROTOCOL // Like NEC, but take the 16 bit address as one 16 bit value and not as 8 bit normal and 8 bit inverted value.
    //#define USE_ONKYO_PROTOCOL // Like NEC, but take the 16 bit address and command each as one 16 bit value and not as 8 bit normal and 8 bit inverted value.
    //#define USE_FAST_PROTOCOL // Use FAST protocol instead of NEC / ONKYO.
    //#define ENABLE_NEC2_REPEATS // Instead of sending / receiving the NEC special repeat code, send / receive the original frame for repeat.
    /
  • Set compile options to modify the generated code.
    */
    //#define DISABLE_PARITY_CHECKS // Disable parity checks. Saves 48 bytes of program memory.
    //#define USE_CALLBACK_FOR_TINY_RECEIVER // Call the user provided function “void handleReceivedTinyIRData()” each time a frame or repeat is received.

#include “TinyIRReceiver.hpp” // include the code

/*

  • Helper macro for getting a macro definition as string
    */
    #if !defined(STR_HELPER)
    #define STR_HELPER(x) #x
    #define STR(x) STR_HELPER(x)
    #endif

void setup() {
Serial.begin(115200);

#if defined(AVR_ATmega32U4) || defined(SERIAL_PORT_USBVIRTUAL) || defined(SERIAL_USB) /stm32duino/|| defined(USBCON) /STM32_stm32/
|| defined(SERIALUSB_PID) || defined(ARDUINO_ARCH_RP2040) || defined(ARDUINO_attiny3217)
// Wait until Serial Monitor is attached.
// Required for boards using USB code for Serial like Leonardo.
// Is void for USB Serial implementations using external chips e.g. a CH340.
while (!Serial)
;
// !!! Program will not proceed if no Serial Monitor is attached !!!
#endif

// Just to know which program is running on my Arduino

#if defined(ESP8266) || defined(ESP32)
Serial.println();
#endif
Serial.println(F("START " FILE " from " DATE "\r\nUsing library version " VERSION_TINYIR));

// Enables the interrupt generation on change of IR input signal
if (!initPCIInterruptForTinyReceiver()) {
    Serial.println(F("No interrupt available for pin " STR(IR_RECEIVE_PIN))); // optimized out by the compiler, if not required :-)
}

#if defined(USE_FAST_PROTOCOL)
Serial.println(F("Ready to receive Fast IR signals at pin " STR(IR_RECEIVE_PIN)));
#else
Serial.println(F("Ready to receive NEC IR signals at pin " STR(IR_RECEIVE_PIN)));
#endif
}

void loop() {
if (TinyReceiverDecode()) {

#if !defined(USE_FAST_PROTOCOL)
// We have no address at FAST protocol
Serial.print(F(“Address=0x”));
Serial.print(TinyIRReceiverData.Address, HEX);
Serial.print(’ ');
#endif

    Serial.print(F("Command=0x"));
    Serial.print(TinyIRReceiverData.Command, HEX);
    if (TinyIRReceiverData.Flags == IRDATA_FLAGS_IS_REPEAT) {
        Serial.print(F(" Repeat"));
    }
    if (TinyIRReceiverData.Flags == IRDATA_FLAGS_PARITY_FAILED) {
        Serial.print(F(" Parity failed"));

#if !defined(USE_EXTENDED_NEC_PROTOCOL) && !defined(USE_ONKYO_PROTOCOL)
Serial.print(F(“, try USE_EXTENDED_NEC_PROTOCOL or USE_ONKYO_PROTOCOL”));
#endif

    }
    Serial.println();
}
/*
 * Put your code here
 */

/*
 * No resume() required :-)
 */

}

/*

  • Optional code, if you require a callback
    /
    #if defined(USE_CALLBACK_FOR_TINY_RECEIVER)
    /
  • This is the function, which is called if a complete frame was received
  • It runs in an ISR context with interrupts enabled, so functions like delay() etc. should work here
    */

if defined(ESP8266) || defined(ESP32)

IRAM_ATTR

endif

void handleReceivedTinyIRData() {

if defined(ARDUINO_ARCH_MBED) || defined(ESP32)

/*
 * Printing is not allowed in ISR context for any kind of RTOS, so we use the slihjtly more complex,
 * but recommended way for handling a callback :-). Copy data for main loop.
 * For Mbed we get a kernel panic and "Error Message: Semaphore: 0x0, Not allowed in ISR context" for Serial.print()
 * for ESP32 we get a "Guru Meditation Error: Core  1 panic'ed" (we also have an RTOS running!)
 */
// Do something useful here...

else

// As an example, print very short output, since we are in an interrupt context and do not want to miss the next interrupts of the repeats coming soon
printTinyReceiverResultMinimal(&Serial);

endif

}
#endif
`


and here is my desktop screen

This sketch requires the file “PinDefinitionsAndMore.h” present either in the src or include folder. Do you have this file present in one of those folders?

after checking the folders no it is not present in neither folder
however i Found it here:

Then you should copy it from the example folder to one of the named folders…

so I should copy the file and include it where exactly?

.
├── .pio
├── .vscode
├── include
├── lib
├── src
│   ├── PinDefinitionsAndMore.h
│   └── TinyReceiver.cpp
├── test
├── .gitignore
└── platformio.ini

so you are saying that besides the main.cpp file that is already in the src directory I should add those two files,am I correct?


right under th main.cpp?

Copy the PinDefinitionsAndMore.h file right beside your main.cpp into the src folder.

The TinyReceiver.cpp from my example is your main.cpp