4

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 Aug 31 '18 at 19:25
9

data is a String. "test" is a char*. Wire.write() has no prototype that takes a String.

Wire.write(data.c_str());
  • working perfectly :) – opu 웃 Aug 28 at 9:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.