Мучаю 2004 с i2c модулем - без модуля тоже тестировал - мой запустился на стандартной библиотеке по 4 битам. Основные грабли как я понял это инициализация 4 бит режима у дисплея, там функции несколько раз вызываются, но это не помогает - как решение вызывать инициализацию lcd.begin() дважды. Мои эксперименты показали что при одинаронм вызове - при ресете дисплей стартует через раз, а при двойном вызове сразу - после любого ресета контроллера хоть по питанию хоть кнопкой.
Проблема скорее всего вызвана внутренним временем на обработку процедур(зависит похоже от конкретного экземпляра). Вобщем невижу ничего страшного чтобы инитить дисплей 2 раза - да хоть 3 - главное чтобы потом он работал.
Вобщем i2c няшка!!!