Arduino与processing之间的通信——进阶版

本文讲述了如何使用Arduino获取传感器数据,将其转换为字母+数字格式通过串口发送给Processing,Processing部分通过接收并解析字符串来构建3D模型的过程,涉及到字符串拼接、整数转字符串以及串口通信技术。
摘要由CSDN通过智能技术生成

本次需要实现Arduino获取板子的偏转角度并通过串口发送给processing,processing部分根据传输过来的各个轴的偏转角度建立对应偏转角度的3D模型。

这就涉及了两个轴正负方向的偏转,我的实现思路是使用串口传输 字母+数字 格式的信息,字母用来判断是哪个轴发生偏转,偏转的角度是正是负,数字就用来表示偏转的角度。

此次是Z轴和X轴这两个。

Arduino部分

这部分的难点在于从传感器获取到的信息是 int 类型的数据,而最终传输的数据应该是一个字母+数字的字符串类型,所以需要把字母跟 int 型变量进行拼接,拼接出来一个字符串。

我的实现过程是首先定义一个字符串

char outPut[10] = "a";

在对数据进行处理的时候首先对字符串进行重新定义,也就是复制一个全新的字符串给outPut

strcpy(outPut, "a");

然后把需要拼接的数据转化成字符串的格式,degreesX是需要转化的原始int型数据,string是转化后的字符串的名称(string是需要提前定义好的 char string[16] = {0}; )

itoa(degreesX,string,10);

接着就可以拼接数据到原来的用于输出的总的字符串了

strcat(outPut,string);

再后面就可以把字符串输出,要注意的是,要用不换行的输出,并且输出以后进行延时操作,如果不延时,接收端接收到的字符串就不是单独一个字符串,而是很多个,因为发送速度太快了,接收端根本来不及处理。

Serial.print(outPut);
delay(40);
processing部分

首先我想到的是用串口中断服务函数,因为这个响应速度快,实验以后发现不行,因为这个函数一次只能接收一个字符,无法进行字符串操作。

void serialEvent(Serial port) {


}

转而采用查询的方式

while(port.available()>0){




}

processing部分可以用的串口函数链接如下

【Processing+Arduino互动编程】_arduino processing交互实例-CSDN博客

我自己采用的是如下函数,首先就是回去串口缓存区的所有字符串,赋值在value变量中并且打印出来便于观察

value = port.readString();
println(value);

用以下方式判断出 字母+数字 中的字母是哪一个

switch(value.charAt(0)){

    case 'a':                    
    break;

    case 'b':
    break;

    case 'c':
    break;

    case 'd':
    break;
}

当字符串中的 字母+数字 的字母是 a 的时候,使用以下方法把字符串中的数字提取出来

a = int(split(value, 'a'));

此时已经判断出字母还有对应的数字,就可以进行其他操作了。

实现的效果如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值