freeLabs 发表于 2016-5-8 14:03:48

Arduino 和 SerialChart 的互动,教程

Arduino 和 SerialChart 的互动

SerialChart是什么?
SerialChart是一个体积非常小串口数据实时生成图形的软件,作用就是绘图,那么在哪些场合可以用上呢?做平衡小车的PID调试,还有卡尔曼滤波融合的时候,借助这个简单的小工具有一个能把数据实时传回电脑进行分析,并且生成图形的软件,会对调试过程起到事半功倍的效果。
正因为SerialChart能做绘图的事情,那么就可以将Arduino的数值传回电脑,然后在绘图。

代码讲解
下面是调试时候的截图,也就是一个抛物线和一个圆的结合,但是有点小瑕疵,就是圆有点不圆,程序中圆的方程和计算是没有什么问题的。只是在Serialchart这里调试有点不理想。


代码下载链接:
链接:http://pan.baidu.com/s/1c24rzHI 密码:kvmr

代码讲解:
port = com3
baurate = 9600
width = 1000
height = 250
background_color = white
grid_h_origin = 0
grid_h_step = 20
grid_h_color = #CCC
grid_h_origin_color = #CCC
grid_v_origin = 0
grid_v_step = 20
grid_v_color = #CCC
grid_v_origin_color = #CCC


min = -5
max = 5


color = red


color = red上面是代码,我不知道怎么给SerialChart写注释,好像没办法写注释,不过下面我讲解一下下面语句的关键点

min = -5
max = 5
这里min max 就是最小最大的意思, 也就是你传回电脑变量的取值范围,这个会对曲线的形状产生非常大的影响,也就是会让你觉得图像或者看上去很奇怪,尽管程序没有错。

好吧,下面插个广告啊。
欢迎光临我们的小店:电子进阶室
https://shop117773209.taobao.com/?spm=a230r.7195193.1997079397.2.nctdgM
我们提供物美价廉的电子模块:
萝莉控遥控器:
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-10523036467.3.OhzoFL&id=522167533120
STC15W最小系统板/开发板-64脚
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-10523036467.5.OhzoFL&id=520524062405
stc15W4K32S4单片机带下载器
https://item.taobao.com/item.htm?spm=686.1000925.0.0.pz8iRP&id=530621935127

那么接下来就分析一下Arduino的程序,思路是这样子的,定义两个float型的数组变量
也就是定一个X轴的变量范围,然后在根绝抛物线和圆的方程,解出Y的坐标,最后在使用Serialchart能够识别的数据格式,串口打印回电脑,那样就能够显示了,当然,这种方法不仅仅局限于Arduino单片机,其他带串口的单片机都是可以通过此方法调试的,之前我也试过使用STC单片机调试。效果也是可以的。/* 这个sketch展示怎么使用Arduino来画一个抛物线
    电脑端使用的画图软件是SerialChart
    圆的方程: X^2+Y^2 = 1
    抛物线方程:y^2 = 2pX
    SerialChart的下载地址是:

    另外也欢迎参观我们的网店,我们提供物美价廉
    的模块
https://shop117773209.taobao.com/?spm=a230r.7195193.1997079397.2.vO4XPP

店铺名称:电子进阶室

萝莉控遥控器:¥45
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-10523036467.3.OhzoFL&id=522167533120

STC15W最小系统板/开发板-64脚 ¥29
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-10523036467.5.OhzoFL&id=520524062405

stc15W4K32S4单片机带下载器 单片机 开发板 套件 C15 系列 手把手 c51 ¥20
https://item.taobao.com/item.htm?spm=686.1000925.0.0.pz8iRP&id=530621935127

   2016/05/07 14:30
*/
float xaxis = {0}; // 圆的X轴
float yaxis = {0}; // 圆的Y轴
float pxaxis = {0}; // 抛物线的X轴
float pyaxis = {0}; // 抛物线的Y轴
int para = 10; //抛物线参数,参数越大,抛物线开口越大

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);

for (int i = 0; i <= 10; i++) // 给X轴赋值
{
xaxis = i * 0.05;
}
for (int i = 0; i <= 10; i++) //给抛物线X轴赋值
{
    yaxis = sqrt(0.5 - xaxis * xaxis); //计算圆的方程
}
for (int i = 0; i <= 100; i++)
{
    pxaxis = 2 * para * i; //计算抛物线的方程
}

}

int delay_plot = 0; //用于画出一条直线用
void loop() {
for (int j = 0; j < 100; j++)
{
    Serial.print(delay_plot);
    Serial.print(",");
    Serial.print(0);
    Serial.println();
}
for (int i = 10; i >= 0; i--)// 画出圆的左半部份
{
    Serial.print(yaxis);
    Serial.print(",");
    Serial.print(-yaxis);
    Serial.println();
}
for (int i = 0; i <= 10; i++) // 画出圆的右半部份
{
    Serial.print(yaxis);
    Serial.print(",");
    Serial.print(-yaxis);
    Serial.println();
}

for (int i = 0; i <= 100; i++) //下面这个循环是画出抛物线
{
    pyaxis = 0.1 * sqrt(pxaxis);
    Serial.print(pyaxis);
    Serial.print(",");
    Serial.print(-pyaxis);
    Serial.println();
}
}最后展示一下其他的画图:
一连串的圆


像关节一样的图形


所有文档的下载链接
1.SerialChart下载地址: 链接:http://pan.baidu.com/s/1qXDgiW8 密码:o9wh
2.所有代码下载:链接:http://pan.baidu.com/s/1c24rzHI 密码:kvmr

参考阅读:
1. SerialChart串口数据波形描绘软件配置详解
http://bbs.ednchina.com/BLOG_ARTICLE_3015472.HTM

2. github中的SerialChart源码 :https://github.com/robint91/serialchart

如果你有任何不明白的地方欢迎指出,感谢帮助我们完善,我们将做得更好。

Hackerpro 发表于 2016-5-9 11:55:54

萝莉的东西虽然是开放的,但还是要在宝贝介绍里声明下吧,尊重下别人的成果
不能让乐意奉献的人心寒

freeLabs 发表于 2016-5-9 17:35:25

Hackerpro 发表于 2016-5-9 11:55 static/image/common/back.gif
萝莉的东西虽然是开放的,但还是要在宝贝介绍里声明下吧,尊重下别人的成果
不能让乐意奉献的人心寒

不好意思,我不是很懂你的意思,能否指明?

Hackerpro 发表于 2016-5-11 11:34:57

freeLabs 发表于 2016-5-9 17:35 static/image/common/back.gif
不好意思,我不是很懂你的意思,能否指明?

我说的是店铺中的商品介绍

novelcrab 发表于 2016-5-11 16:39:15

挺实用的东东

weiview 发表于 2016-5-17 12:02:13

' 注释


'设置端口参数
port=COM2   
baudrate=9600
'设置绘图区域 单位:像素
width=3600
height=500
background_color = #333333
'设置水平网格,X轴线
grid_h_origin = 300
grid_h_origin_color = yellow
grid_h_step = 10
grid_h_color = #999999

'设置垂直网格,Y轴线
grid_v_origin = 60
grid_v_origin_color = white
grid_v_step = 10
grid_v_color = #999999


'取值映射范围

min=200
max=700

'第一条曲线

color=red

‘第二条曲线

color=green

’第三条曲线

color=#00ffff

nxcosa 发表于 2016-5-18 13:49:49

你可以去看看DF做的一个开源的串口波形显示的   https://github.com/DFRobot/DFSerialChart   下载后之间点start.bat就好了不需要任何配置
页: [1]
查看完整版本: Arduino 和 SerialChart 的互动,教程