极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23792|回复: 6

Arduino 和 SerialChart 的互动,教程

[复制链接]
发表于 2016-5-8 14:03:48 | 显示全部楼层 |阅读模式
Arduino 和 SerialChart 的互动

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


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


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

代码讲解:
  1. [_setup_]
  2. port = com3
  3. baurate = 9600
  4. width = 1000
  5. height = 250
  6. background_color = white
  7. grid_h_origin = 0
  8. grid_h_step = 20
  9. grid_h_color = #CCC
  10. grid_h_origin_color = #CCC
  11. grid_v_origin = 0
  12. grid_v_step = 20
  13. grid_v_color = #CCC
  14. grid_v_origin_color = #CCC

  15. [_default_]
  16. min = -5
  17. max = 5

  18. [yaxis]
  19. color = red

  20. [pyaxis]
  21. color = red
复制代码
上面是代码,我不知道怎么给SerialChart写注释,好像没办法写注释,不过下面我讲解一下下面语句的关键点
[_default_]
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单片机调试。效果也是可以的。
  1. /* 这个sketch展示怎么使用Arduino来画一个抛物线
  2.     电脑端使用的画图软件是SerialChart
  3.     圆的方程: X^2+Y^2 = 1
  4.     抛物线方程:y^2 = 2pX
  5.     SerialChart的下载地址是:

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

  9. 店铺名称:电子进阶室
  10.   
  11. 萝莉控遥控器:¥45
  12. https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-10523036467.3.OhzoFL&id=522167533120

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

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

  17.    2016/05/07 14:30
  18. */
  19. float xaxis[11] = {0}; // 圆的X轴
  20. float yaxis[11] = {0}; // 圆的Y轴
  21. float pxaxis[101] = {0}; // 抛物线的X轴
  22. float pyaxis[101] = {0}; // 抛物线的Y轴
  23. int para = 10; //抛物线参数,参数越大,抛物线开口越大

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

  27.   for (int i = 0; i <= 10; i++) // 给X轴赋值
  28.   {
  29. xaxis[i] = i * 0.05;
  30.   }
  31.   for (int i = 0; i <= 10; i++) //给抛物线X轴赋值
  32.   {
  33.     yaxis[i] = sqrt(0.5 - xaxis[i] * xaxis[i]); //计算圆的方程
  34.   }
  35.   for (int i = 0; i <= 100; i++)
  36.   {
  37.     pxaxis[i] = 2 * para * i; //计算抛物线的方程
  38.   }

  39. }

  40. int delay_plot = 0; //用于画出一条直线用
  41. void loop() {
  42.   for (int j = 0; j < 100; j++)
  43.   {
  44.     Serial.print(delay_plot);
  45.     Serial.print(",");
  46.     Serial.print(0);
  47.     Serial.println();
  48.   }
  49.   for (int i = 10; i >= 0; i--)// 画出圆的左半部份
  50.   {
  51.     Serial.print(yaxis[i]);
  52.     Serial.print(",");
  53.     Serial.print(-yaxis[i]);
  54.     Serial.println();
  55.   }
  56.   for (int i = 0; i <= 10; i++) // 画出圆的右半部份
  57.   {
  58.     Serial.print(yaxis[i]);
  59.     Serial.print(",");
  60.     Serial.print(-yaxis[i]);
  61.     Serial.println();
  62.   }

  63.   for (int i = 0; i <= 100; i++) //下面这个循环是画出抛物线
  64.   {
  65.     pyaxis[i] = 0.1 * sqrt(pxaxis[i]);
  66.     Serial.print(pyaxis[i]);
  67.     Serial.print(",");
  68.     Serial.print(-pyaxis[i]);
  69.     Serial.println();
  70.   }
  71. }
复制代码
最后展示一下其他的画图:
一连串的圆


像关节一样的图形


所有文档的下载链接
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

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-5-9 11:55:54 | 显示全部楼层
萝莉的东西虽然是开放的,但还是要在宝贝介绍里声明下吧,尊重下别人的成果
不能让乐意奉献的人心寒
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-5-9 17:35:25 | 显示全部楼层
Hackerpro 发表于 2016-5-9 11:55
萝莉的东西虽然是开放的,但还是要在宝贝介绍里声明下吧,尊重下别人的成果
不能让乐意奉献的人心寒

不好意思,我不是很懂你的意思,能否指明?
回复 支持 反对

使用道具 举报

发表于 2016-5-11 11:34:57 | 显示全部楼层
freeLabs 发表于 2016-5-9 17:35
不好意思,我不是很懂你的意思,能否指明?

我说的是店铺中的商品介绍
回复 支持 反对

使用道具 举报

发表于 2016-5-11 16:39:15 | 显示全部楼层
挺实用的东东
回复 支持 反对

使用道具 举报

发表于 2016-5-17 12:02:13 | 显示全部楼层
' 注释

  1. [_setup_]

  2. '设置端口参数
  3. port=COM2   
  4. baudrate=9600
  5. '设置绘图区域 单位:像素
  6. width=3600
  7. height=500
  8. background_color = #333333
  9. '设置水平网格,X轴线
  10. grid_h_origin = 300
  11. grid_h_origin_color = yellow
  12. grid_h_step = 10
  13. grid_h_color = #999999

  14. '设置垂直网格,Y轴线
  15. grid_v_origin = 60
  16. grid_v_origin_color = white
  17. grid_v_step = 10
  18. grid_v_color = #999999


  19. '取值映射范围
  20. [_default_]
  21. min=200
  22. max=700

  23. '第一条曲线
  24. [Field1]
  25. color=red

  26. ‘第二条曲线
  27. [Field2]
  28. color=green

  29. ’第三条曲线
  30. [Field3]
  31. color=#00ffff
复制代码
回复 支持 反对

使用道具 举报

发表于 2016-5-18 13:49:49 | 显示全部楼层
你可以去看看DF做的一个开源的串口波形显示的   https://github.com/DFRobot/DFSerialChart     下载后之间点start.bat就好了  不需要任何配置
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-26 14:34 , Processed in 0.049126 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表