Планируемая структура:
main.cpp - основной код проекта
html - код html-страниц
functions - все мои самописные функции
config - настройки (объявление всех переменных и установка значений по умолчанию)
плохой подход. У вас так будет слишком много общих элементов и перкрестных связей между файлами. Это не упрощает, а только запутывает программу.
Правильнее разделять программу по смыслу действий на изолированные части и эти части уже распределять по файлам. Например, все функции работы с экраном собрать в один файл, а работу с кнопками в другой. И подключить библиотеку экрана только в первом файле, а не включать ее во все.
В идеале части должны быть полностью независимы, как кубики конструктора, так чтобы их можно было взять и перенести в другой проект, почти ничего не меняя. Хорошим примером по выделению части программы в отдельный модуль является схема организации библиотек ардуино. Вот и вы старайтесь разбивать пооект так, чтобы у него был главный файл c функцией main, а все прочие части были оформлены как библиотеки. Это значит, что между файлами не должно быть общих переменных. Избегайте глобалов и квалификатора extern. При необходимости передачи данных используйте передачу по ссылке или по указателю через параметры функций.