首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在两片arduino单片机上实现i2c通信的字符串发送

在两片arduino单片机上实现i2c通信的字符串发送
EN

Stack Overflow用户
提问于 2015-06-01 19:41:44
回答 1查看 7K关注 0票数 0

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

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

这是主mcu的示例代码

代码语言:javascript
复制
//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(); 

}

}

}

这是从服务器的示例代码

代码语言:javascript
复制
//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和微控制器的新手。解决我的问题最简单的方法是什么?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2018-05-03 20:19:35

您可以将字符串作为字符*传递给Wire.write()。因此,如果字符串a= "test";是较早的声明,请尝试使用Char* a= "test";它将通过

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30572589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档