Даже маленькие проекты лучше не писать как стихи в одну колонку. Это затрудняет восприятие кода. Функциональные блоки программы лучше разделить в разные файлы, например: lcd, timer, serial и т.д..
Тогда каждый блок будет лаконичным и читаемым. А в главном файле оставить setup() из 4-х строк и практически пустой loop() с вызовами нужных в данный момент функций.
Для временных интервалов лучше использовать встроенные таймеры и в обработчике прерывания выполнять логику.
Delay блокирует, замораживает выполнение кода. В циклах лучше отказаться от применения delay.
Для отладки проще всего выводить значения в окно терминала: Serial.print().
Другими словами, если скетч сократить в несколько раз подобными методами, то ошибка всплывет сама собой, окажется перед глазами.
int potent1 = analogRead(0);
лучше не использовать прямое указание по номеру пина, легко запутаться. Под флагом платформы "ардуино" сейчас сожительствуют сотни различных микроконтроллеров и у многих есть существенные отличия в параметрах, в т.ч. АЦП.
Лучше сначала описать пин, а потом на него ссылаться. Записи A0, D3 и т.п. более однозначны.
A - аналоговые входы, D - цифровые.
Иначе можно физически разместить потенциометр не на тех ногах. Такое редко бывает, но бывает.