Как отправить строку на мастер с помощью 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


1 ответ


Лучший ответ:

12

data — это <code>Строка</code>. "test" — это char*. <code>Wire.write()</code> не имеет прототипа, который принимает Строку.

Wire.write(data.c_str());
,

работает отлично :), @opu 웃