Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在两个arduino微控制器上使用i2c通信发送字符串_String_Arduino_Communication_I2c_Led - Fatal编程技术网

String 在两个arduino微控制器上使用i2c通信发送字符串

String 在两个arduino微控制器上使用i2c通信发送字符串,string,arduino,communication,i2c,led,String,Arduino,Communication,I2c,Led,我使用两个arduino mcu连接两行LED矩阵显示器。我尝试使用i2c通信连接主mcu(控制LED矩阵显示的第一行)和从mcu(控制LED矩阵显示的第二行)。我需要将一个字符串数据(由300个字符组成)从主机传递到从机,这样我就可以将相同的字符串显示到LED矩阵显示器的第二行 问题是,我无法使用Wire.read()将字符串变量从主机传递到从主机。对此,我的解决方案是在使用wire.read()传输数据之前将字符串转换为字符,但从属服务器无法接收整个字符串,只能接收前几个字符。我在显示器的计

我使用两个arduino mcu连接两行LED矩阵显示器。我尝试使用i2c通信连接主mcu(控制LED矩阵显示的第一行)和从mcu(控制LED矩阵显示的第二行)。我需要将一个字符串数据(由300个字符组成)从主机传递到从机,这样我就可以将相同的字符串显示到LED矩阵显示器的第二行


问题是,我无法使用Wire.read()将字符串变量从主机传递到从主机。对此,我的解决方案是在使用wire.read()传输数据之前将字符串转换为字符,但从属服务器无法接收整个字符串,只能接收前几个字符。我在显示器的计时上也有问题,LED矩阵的第二行(由从机控制)很晚才显示字符串

这是主mcu的示例代码

//Master Code

String inData;
String LED_DATA;
char buf[300];
void Input(void){ 
while(Serial.available() > 0)
 {

 char received = Serial.read();
 inData+=received;

 if(received == '~')
 {

     LED_DATA = inData; 
     inData.toCharArray(buf,300);   

     Wire.beginTransmission(5);
     Wire.write(buf);
     Wire.endTransmission(); 

}

}

}
这是从机的示例代码

//slave

char LED_DATA[100];

void setup(){        
Wire.begin(5);
Wire.onReceive(receiveEvent);
}

void receiveEvent(int howMany){
 while(Wire.available()){ 
 LED_DATA[300] = Wire.read();
 }
}


我不熟悉arduino和微控制器。解决我的问题最简单的方法是什么?非常感谢。

您可以将字符串作为char*传递给Wire.write()。所以如果字符串a=“test”;是前面的声明,请尝试使用Char*a=“test”;它将通过

发送数据。您尚未说明问题所在!问题是,我无法使用Wire.read()将字符串变量从主机传递到从主机。对此,我的解决方案是在使用wire.read()传输数据之前将字符串转换为字符,但从属服务器无法接收整个字符串,只能接收前几个字符。我在显示的计时上也有问题,LED矩阵的第二行(由从机控制)很晚才显示字符串。@jbanimated10,从机的代码看起来很奇怪。在主代码中定义300时,字符数组的大小错误。和
LED_DATA[300]=Wire.read()
这是错误的。可能
LED\u DATA[i++]=Wire.read()
您希望这样做。呵呵?