I want to write an Arduino program that simply recieves a string (via the I2C wire library) from a master Arduino, then waits for a request, and sends that string back.
Here is my code:
#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);
}
I read in the API that the write() function accepts a string, but I keep getting a "No matching function for call" error. I tried to simply replace
Wire.write(data);
with
Wire.write("test");
and that worked without error. Why is this the case?
-
Try this instead of wire.write(data); wire.print(data);newy8– newy82018年08月31日 19:25:34 +00:00Commented Aug 31, 2018 at 19:25
1 Answer 1
data
is a String
. "test"
is a char*
. Wire.write()
has no prototype that takes a String
.
Wire.write(data.c_str());