Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't find EEPROM.h in Arduino IDE #24

Open
EdwardDeaver opened this issue Jun 2, 2024 · 14 comments
Open

Can't find EEPROM.h in Arduino IDE #24

EdwardDeaver opened this issue Jun 2, 2024 · 14 comments
Assignees

Comments

@EdwardDeaver
Copy link

I opened the project in the latest Arduino IDE and I'm getting these errors:

/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp: In function 'void EepromInit(int)':
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp:36:3: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?
36 | EEPROM.begin(_eeprom_size);
| ^~~~~~
| EPERM
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp: In function 'void EepromClear()':
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp:65:5: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?
65 | EEPROM.write(n, 0xff);
| ^~~~~~
| EPERM
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp:66:3: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?
66 | EEPROM.commit();
| ^~~~~~
| EPERM
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp: In function 'int EepromRead(int, int, void*)':
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp:80:9: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?
80 | if (EEPROM.read(addr + n) != 0xff)
| ^~~~~~
| EPERM
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp:87:28: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?
87 | ((byte ) buffer)[n] = EEPROM.read(addr + n);
| ^~~~~~
| EPERM
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp: In function 'void EepromWrite(int, int, const void
)':
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp:102:5: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?
102 | EEPROM.write(addr + n, ((byte *) buffer)[n]);
| ^~~~~~
| EPERM
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/eeprom.cpp:107:3: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?
107 | EEPROM.commit();
| ^~~~~~
| EPERM
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/ntp.cpp: In function 'void NtpSetup()':
/Users/$USERNAME/Downloads/BLE-Scanner-main/BLE-Scanner/ntp.cpp:178:7: error: 'WiFi' was not declared in this scope
178 | if (WiFi.hostByName(_config_ntp.server, _ntp_ip)) {
| ^~~~

exit status 1

Compilation error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?

@gromeck
Copy link
Owner

gromeck commented Jul 2, 2024

Hi @EdwardDeaver,
which version of Arduino IDE are you using?
Did you install the esp32 package? EEPROM should be part of it.

@wprinz
Copy link

wprinz commented Jul 29, 2024

Hi @gromeck , I'm having similar problems, both with WIFI and EEPROM. I'm getting the following compile errors:

C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\ntp.cpp:181:7: error: 'WiFi' was not declared in this scope
  181 |   if (WiFi.hostByName(_config_ntp.server, _ntp_ip)) {
      |       ^~~~

C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\eeprom.cpp: In function 'void EepromInit(int)':
C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\eeprom.cpp:36:3: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'?
   36 |   EEPROM.begin(_eeprom_size);
      |   ^~~~~~
      |   EPERM

... and many other EEPROM was not declared in this scope errors

All libs are installed. I assume something goes wrong with the include sequence, as the compiler does not complain about a missing lib, but a missing declaration in this scope. Any hint is appreciated. I'm using Arduino IDE 2.3.2 on win10.

@gromeck
Copy link
Owner

gromeck commented Jul 29, 2024

C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\ntp.cpp:181:7: error: 'WiFi' was not declared in this scope
181 | if (WiFi.hostByName(_config_ntp.server, _ntp_ip)) {
| ^~~~

Try adding

#include "wifi.h"

to the file ntp.cpp directly after #include "config.h"

But I can't explain why I don't get this error :-/

@gromeck
Copy link
Owner

gromeck commented Jul 29, 2024

All libs are installed.

Are you sure that you've installed the esp32 lib by Espressif Systems -- not Arduino ESP32 Boards lib by Arduino?
See the https://github.com/gromeck/BLE-Scanner/blob/main/README.md, section , first two bullet points.

@wprinz
Copy link

wprinz commented Jul 29, 2024

First I installed only the esp32, later I also installed the Arduino ESP32 Boards, to test if this could solve the problem. Thus I now have both installed, but only a ESP32 board is selected.

@wprinz
Copy link

wprinz commented Jul 29, 2024

unfortunately the error remains:
:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\eeprom.cpp: In function 'void EepromInit(int)': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\eeprom.cpp:36:3: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'? 36 | EEPROM.begin(_eeprom_size); | ^~~~~~ | EPERM C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\eeprom.cpp: In function 'void EepromClear()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\eeprom.cpp:65:5: error: 'EEPROM' was not declared in this scope; did you mean 'EPERM'? 65 | EEPROM.write(n, 0xff); | ^~~~~~ | EPERM

then later:

C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\ntp.cpp: In function 'void NtpSetup()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\ntp.cpp:182:7: error: 'WiFi' was not declared in this scope 182 | if (WiFi.hostByName(_config_ntp.server, _ntp_ip)) { | ^~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp: In function 'bool WifiSetup()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:52:5: error: 'WiFi' was not declared in this scope 52 | WiFi.macAddress(mac); | ^~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:56:15: error: 'WIFI_AP' was not declared in this scope 56 | WiFi.mode(WIFI_AP); | ^~~~~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:81:5: error: 'WiFi' was not declared in this scope 81 | WiFi.mode(WIFI_STA); | ^~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:81:15: error: 'WIFI_STA' was not declared in this scope 81 | WiFi.mode(WIFI_STA); | ^~~~~~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp: In function 'bool WifiUpdate()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:107:9: error: 'WiFi' was not declared in this scope 107 | if (WiFi.status() != WL_CONNECTED) { | ^~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:107:26: error: 'WL_CONNECTED' was not declared in this scope 107 | if (WiFi.status() != WL_CONNECTED) { | ^~~~~~~~~~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp: In function 'String WifiGetSSID()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:146:53: error: 'WiFi' was not declared in this scope 146 | return StateCheck(STATE_CONFIGURING) ? _AP_SSID : WiFi.SSID(); | ^~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp: In function 'int WifiGetChannel()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:158:10: error: 'WiFi' was not declared in this scope 158 | return WiFi.channel(); | ^~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp: In function 'int WifiGetRSSI()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:170:10: error: 'WiFi' was not declared in this scope 170 | return WiFi.RSSI(); | ^~~~ In file included from C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:30: C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp: In function 'String WifiGetIpAddr()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:183:60: error: 'WiFi' was not declared in this scope 183 | return IPAddressToString(StateCheck(STATE_CONFIGURING) ? WiFi.softAPIP() : WiFi.localIP()); | ^~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\util.h:63:37: note: in definition of macro 'IPAddressToString' 63 | #define IPAddressToString(addr) ((addr).toString()) | ^~~~ C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp: In function 'String WifiGetMacAddr()': C:\Users\prinz\Documents\Projekte\Arduino\BLE-Scanner\wifi.cpp:197:3: error: 'WiFi' was not declared in this scope 197 | WiFi.macAddress(mac); | ^~~~

which looks really strange that WiFi is not declared in wifi.cpp - I assume something really strange is going on here.

@gromeck
Copy link
Owner

gromeck commented Jul 29, 2024

First I installed only the esp32, later I also installed the Arduino ESP32 Boards, to test if this could solve the problem. Thus I now have both installed, but only a ESP32 board is selected.

Please, deinstall the Arduino ESP32 Boards lib.

Additionally, open File -> Preferences ... -> Settings and ensure that Show verbose output during has compile checked. Then recompile and send the complete compile log (as attachment) here.

@wprinz
Copy link

wprinz commented Jul 29, 2024

Thanks for your time!

Arduino ESP32 Boards are removed.

Here is the full compiler log: (too long to include in comment)
compile_log.txt

@gromeck
Copy link
Owner

gromeck commented Jul 30, 2024

This compile log lacks a lot of information.

My log starts with the target specification of the the compile:

FQBN: esp32:esp32:d1_mini32:PartitionScheme=min_spiffs
Using board 'd1_mini32' from platform in folder: /home/gromeck/.arduino15/packages/esp32/hardware/esp32/3.0.3
Using core 'esp32' from platform in folder: /home/gromeck/.arduino15/packages/esp32/hardware/esp32/3.0.3

For each library a section with the selected one is output:

Detecting libraries used...
/home/gromeck/.arduino15/packages/esp32/tools/esp-x32/2302/bin/xtensa-esp32-elf-g++ -c ... /tmp/arduino/sketches/7970E08F2BBB3C33259147BC24A1229F/sketch/BLE-Scanner.ino.cpp -o /dev/null
Alternatives for WiFi.h: [[email protected] [email protected]]
ResolveLibrary(WiFi.h)
  -> candidates: [[email protected] [email protected]]

I was not aware that compiling under Windows and Linux is that different.
I am running IDE 2.3.2 under Linux.
I have no idea (and no windows). But you might try under Linux.

Did you try the examples which are offered in the IDE?
Try to compile File -> Examples -> EEPROM -> eeprom_class and File -> Examples -> WiFi -> WiFiClient with your desired ESP32 board.

@wprinz
Copy link

wprinz commented Jul 30, 2024

Hi @gromeck, your comment about Linux guided me to the solution. The problem is caused by using the file names wifi.h and eeprom.h as well as the corresponding compiler flags in your files. Windows confuses these files with the libraries WiFi and EEPROM. This results in these very strange problems, most probably caused by using the same compiler flags in your .h files as in the library .h files. After modifying both, i.e. the files names to my_wifi.h/.cpp and my_eeprom.h/.cpp as well as the flags to __MY_EPROM_H__ and __MY_WIFI_H__ the code compiled successfully. You may wish to make these changes also to you repro.

In parallel I tried to compile the code also using visual studio and platformio, but not yet successful as I'm getting similar very strange error messages. I'll keep trying :-) to understand what the problem with platformio is.

@gromeck
Copy link
Owner

gromeck commented Jul 31, 2024

Hmm, ok, that's wierd.
There should be no dependencies between the file names in my own sketch and the ones from the libraries.

This could be an issue of the Arduino IDE 2. Do you know about filename rules there?

as well as the flags to MY_EPROM_H and MY_WIFI_H

Could you please check, if this is necessary? The libs use other flag name/rules and should not collide (this would otherwise be also the case under Linux).

@wprinz
Copy link

wprinz commented Jul 31, 2024

You are right! I changed MY_EEPROM_H and MY_WIFI_H back to EEPROM_H and WIFI_H and it compiles without any problems.

I assume the file name problem is caused by the fact that windows files names are case insensitiv. : https://learn.microsoft.com/en-us/windows/wsl/case-sensitivity This probably leads to the wierd error messages.

@gromeck
Copy link
Owner

gromeck commented Jul 31, 2024

You are right! I changed MY_EEPROM_H and MY_WIFI_H back to EEPROM_H and WIFI_H and it compiles without any problems.

Ok, thanks for this check.

I assume the file name problem is caused by the fact that windows files names are case insensitiv. : https://learn.microsoft.com/en-us/windows/wsl/case-sensitivity This probably leads to the wierd error messages.

Yes, and this causes some problems even within the IDE 2 (see https://github.com/arduino/arduino-ide/issues?q=is%3Aissue+is%3Aopen++case+sensitive).
As I don't have a windows environment, you could open an issue against die IDE with some simple code that shows the problem (or by using BLE-Scanner as a reference).

@wprinz
Copy link

wprinz commented Jul 31, 2024

I'm not sure if this is an Arduino issue. In the meantime I succeeded to compile your code in Visual Studio Code and PlatformIO. There, the same problems occur and after modifying the filenames as well as the watchdog code everything compiled OK. I've left some comments about this in the corresponding issue on PlatformIO.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants