Breaking ino files into .h files fails

along with the .cpp files, right?

presumably you have groups of functions that support various features. functoins for each feature can be separated into separate .cpp fills. But code in other files needs to know what what arguments (and types) and the return type (if any) of those functions ... the function prototype.

The function prototypes need to be defined in the ,h file. The .h file needs to be included in the files (.ino or .cpp) of the code calling those functions, otherwise the compiler will complaing that the function(s) are undefined.

the .h file should also be included in the corresponding .cpp which will insure that the declaration of the function in the .h matches the definition in the .cpp.

the .h file might also include other definitions for struct, const and enumeration used by the funcitons for the features. only the things that need to be shared.

my Node2 model RR signal code that also used WiFi. Here's a file listing, you can see that it does stuff with the EEPROM, I2C and WiFi, each .cpp has a corresponding .h

Node2.ino
eeprom.cpp
eeprom.h
i2c.cpp
i2c.h
mpc23017.h
node.h
pcRead.cpp
pcRead.h
sigMap.cpp
signals.cpp
signals.h
wifi.cpp
wifi.h