In a perfect world, library authors would use original names for their header files, rather than giving them incredibly generic names like DS1307.h, which are bound to cause conflict with the other installed libraries written by similarly uncreative authors. In the case where you are using the Arduino IDE, you could deal with this by simply picking the best library to use in all your sketches, and only installing that one. In the case of the Arduino Web Editor, the problem is much more serious because all the thousands of libraries in the Arduino Library Manager are pre-installed and there is no way to uninstall them.
Say you really did want to use multiple conflicting libraries in your various sketches. If you’re using the Arduino IDE, a solution is to install the library to the src subfolder of the sketch folder. For example, lets say you have a sketch named “Foo” and a library named DS1307. The folder structure would look something like this:
Then your #include directive would look like this:
When doing that, you might find that some libraries need their #include directives updated. For example, lets say DS1307 has this line:
Although technically incorrect, that would have worked fine when the library was installed normally, so you will see this issue frequently with Arduino libraries. The solution is to change it to:
It gets a little more tricky when you have multiple libraries installed to the src subfolder which each have dependency on each other. In that case, you need to specify the relative path from one to the other in their #include directives. For example, lets say the DS1307 library has a dependency on the library named Bar, which is also installed to the src subfolder. If DS1307.h originally had this #include directive:
You would need to change it to:
Unfortunately, Arduino Web Editor does not support the src subfolder of the sketch folder, so you can’t use this solution there. In that case, you would have no alternative other than to put the library files right in the root of the sketch folder. That could get pretty cluttered if you had multiple libraries thrown in there and each of the library source files will show up as a tab in the Arduino Web Editor/Arduino IDE, which could make it more confusing because the library code will not be hidden away.
Is it by using different characters (as #include"" or #include<>) in the lib declaration in the sketch ?
What is the meaning of these 2 different declarations ?
#include <Foo.h> causes the standard library folders to be searched for the file.
#include “Foo.h” causes the current folder to be searched for the file. If it’s not found there, the standard library folders will be searched for the file.