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

本次需要实现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'));

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

实现的效果如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/509787.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java和JavaScript之间的主要区别与联系

目录 概况 主要区别 联系 总结 概况 Java和JavaScript,尽管名字相似,但它们在编程世界中却扮演着截然不同的角色。Java,一种强类型、面向对象的编程语言,广泛应用于企业级应用和安卓应用开发。它的设计理念是一次编写&#x…

HLS的硬件加速器设计

完整可点击跳转 目录 硬件加速器的设计方法高层次综合HLSHLS与电路地对应关系HLS的设计规范HLS优化延迟优化降低单个循环的延迟循环展开(Unroll)循环展平(Flatten)多个循环的并行化循环合并循环函数化数据流执行(Dataflow)吞吐量优化循环/函数流水线数据流优化调试硬件加…

每日一练:LeeCode-203. 移除链表元素 【链表+虚拟头结点】

每日一练:LeeCode-203. 移除链表元素 【链表虚拟头结点】 思路设置虚拟头结点 本文是力扣 每日一练:LeeCode-203. 移除链表元素 【链表虚拟头结点】 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode-20…

BUUCTF---[极客大挑战 2019]Upload1

1.题目描述 2.点开链接&#xff0c;需要上传文件&#xff0c;要求是image&#xff0c;上传文件后缀为jpg的一句话木马&#xff0c;发现被检测到了 3.换另一个木马试试 GIF89a? <script language"php">eval($_REQUEST[1])</script> 发现可以上传成功 4…

服务器硬件基础知识

1. 服务器分类 服务器分类 服务器的分类没有一个统一的标准。 从多个多个维度来看服务器的分类可以加深我们对各种服务器的认识。 N.B. CISC: complex instruction set computing 复杂指令集计算 RISC: reduced instruction set computer 精简指令集计算 EPIC: explicitly p…

骨传导耳机哪个牌子好?简单6招教你选到高品质机型!

作为一名有着十几年工作经验的资深数码产品测评师&#xff0c;多年来见过太多因为选购劣质骨传导耳机而踩雷的情况&#xff0c;对此&#xff0c;我想要提醒大家的是&#xff0c;在选择骨传导耳机时不要一味地追求外观颜值、品牌知名度&#xff0c;而应该更加重视产品的专业技术…

黑马点评-短信登录业务

原理 模型如下 nginx nginx基于七层模型走的事HTTP协议&#xff0c;可以实现基于Lua直接绕开tomcat访问redis&#xff0c;也可以作为静态资源服务器&#xff0c;轻松扛下上万并发&#xff0c; 负载均衡到下游tomcat服务器&#xff0c;打散流量。 我们都知道一台4核8G的tomca…

史上最全的大数据开发八股文【自己的吐血总结】

自我介绍 我本硕都是双非计算机专业&#xff0c;从研一下开始学习大数据开发的相关知识&#xff0c;从找实习到秋招&#xff0c;我投递过100公司&#xff0c;拿到过10的offer&#xff0c;包括滴滴、字节、蚂蚁、携程、蔚来、去哪儿等大厂&#xff08;岗位都是大数据开发&#…

数学建模【多元线性回归模型】

一、多元线性回归模型简介 回归分析是数据分析中最基础也是最重要的分析工具&#xff0c;绝大多数的数据分析问题&#xff0c;都可以使用回归的思想来解决。回归分析的任务就是&#xff0c;通过研究自变量X和因变量Y的相关关系&#xff0c;尝试去解释Y的形成机制&#xff0c;进…

ES入门三:全文搜索Api实践

ES是一个强大的搜索引擎&#xff0c;它提供了非常丰富的数据检索Api来满足用户各种各样的需求。我们今天要介绍的是部分非常基础的全文搜索Api&#xff0c;这部分Api我们会在日常使用中经常用到。 在我们查询一些文本内容的时候&#xff0c;一般不会做精确匹配&#xff0c;一来…

A/D转换

硬件电路模型 模数转换代码 main.c #include <REGX52.H> #include "LCD1602.h" #include "Delay.h" #include "XPT2046.h"unsigned int ADValue; int main(){LCD_Init();LCD_ShowString(1,1,"ADJ NTC RG");while(1){ADValue …

10W 音频功率放大电路芯片TDA2003,可用于汽车收音机及收录机中作音频功率放大器,内部具有短路保护和过热保护等功能

TDA2003 用于汽车收音机及收录机中作音频功率放大器。 采用 TO220B5 封装形式。 主要特点&#xff1a; ⚫ 内部具有短路保护和过热保护。内部具有地线开路、电源极性接 反和负载泄放电压反冲等保护电路。 ⚫ 输出电流大。 ⚫ 负载电阻可低至 1.6 。 …