Передача массива по i2c

А чем Вас не устраивает штатный способ, который предоставляет библиотека Wire? У неё есть метод

size_t write(const uint8_t *, size_t);

Вот и используйте его. Первым аргументом задать адрес нулевого элемента массива, а вторым – длину массива в байтах. С этим способом что-то не так? Или зачем эти извращения с поэлементной передачей?

Поясните толком в чём проблема и проиллюстрируйте её кодом в котором у Вас что-то не срабатывает.