Как отправить строку на мастер с помощью i2c

Я хочу написать программу Arduino, которая просто получает строку (через библиотеку I2C Wire) от главного устройства Arduino, затем ждет запроса и отправляет эту строку обратно.

Вот мой код:

#include <Wire.h>

void setup()
{
  Wire.begin(4); 
  Wire.onReceive(receiveEvent); 
  Wire.onRequest(requestEvent);
}

String data = "";

void loop()
{

}

void receiveEvent(int howMany)
{
  data = "";
  while( Wire.available()){
    data += (char)Wire.read();
  }
}

void requestEvent()
{
    Wire.write(data);
}

Я прочитал в API, что функция write() принимает строку, но я продолжаю получать ошибку «Нет соответствующей функции для вызова». Я попытался просто заменить

Wire.write(data);

с

Wire.write("test");

и это сработало без ошибок. Почему так?

, 👍5

Обсуждение

Попробуйте это вместо wire.write(data);, @newy8