开启左侧

Arduino入门之串口(三)

[复制链接]
发表于 2017-3-19 14:57:25 | 显示全部楼层 |阅读模式
本帖最后由 PPeach 于 2017-3-19 15:25 编辑

本篇文章主要讲述的是有关Arduino(下位机)与电脑(上位机)通讯的。

首先,我们先贴出一段Arduino代码,是关于串口控制Led的。
  1. void setup()
  2. {
  3.   Serial.begin(9600);
  4.   pinMode(LED_BUILTIN , OUTPUT);

  5.   while (!Serial);
  6.   Serial.print("O - Open Board Led \nC - Close Board Led \n");
  7. }

  8. void loop()
  9. {
  10.   if (Serial.available())
  11.   {
  12.     char c = Serial.read();

  13.     if (c == 'O')
  14.     {
  15.       digitalWrite(LED_BUILTIN, HIGH);
  16.       Serial.println("Value = O ; Led on");
  17.     }
  18.     else if (c == 'C')
  19.     {
  20.       digitalWrite(LED_BUILTIN, LOW);
  21.       Serial.println("Value = C ; Led off");
  22.     }

  23.     c = -1;
  24.   }
  25. }
复制代码
Test.png
效果如上图所示,这就是一个很简单的串口控制程序,效果已经达成,但是这样实际是很不方便用户使用的,我们不可能每次输入一个数据,然后手动发送,短的数据还好说,就类似文章中的“C”“O”,但如果是一长串的控制代码,类似舵机控制板的控制代码。那就是一段很长很复杂的命令了,所以我们就需要再写一个上位机代替我们命令发送这件事,我们只需要手点点就可以控制。本文采用的是Processing,并将在下一篇文章中采用Python这两种方式来控制Arduino点灯(专业点灯三十年,品质没保障!)
  1. import processing.serial.*;

  2. Serial myPort;
  3. int val;
  4. boolean state = true;
  5. void setup()
  6. {
  7.   size(500, 500);
  8.   String portName = Serial.list()[1];  //此处应该注意Serial.list()从0开始,因为我的Arduino串口在设备管理器中是第二个串口(和占用COMX无关),所以这里填写1。
  9.   myPort = new Serial(this, portName, 9600);
  10. }

  11. void draw() {
  12.   background(255);
  13.   while ( myPort.available() > 0)
  14.     print((char)myPort.read());
  15.   if (mouseOverRect() == true && state == false) {
  16.     fill(255);
  17.     myPort.write('O');
  18.     state = true;
  19.   } else if (mouseOverRect() == false && state == true) {
  20.     fill(0);
  21.     myPort.write('C');
  22.     state = false;
  23.   }
  24.   rect(100, 100, 300, 300);
  25. }

  26. boolean mouseOverRect()
  27. {
  28.   return ((mouseX >= 100) && (mouseX <= 400) && (mouseY >= 100) && (mouseY <= 400));
  29. }
复制代码
安装Processing后运行改程序。我们可以得到这样的一个图形
Test2.png
当我们把鼠标移动到黑色方块内,我们会发现黑色方框会变白,同时,窗体下方监视器会提示我们Led已经打开,再次移开,方框又会变黑同时会提示我们Led已经关闭。
Test3.png
这就是一个简单例子来通过一个简单方式去控制Arduino而不是通过串口监视器
回复

使用道具 举报

发表于 2017-3-20 15:22:54 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则

精彩课程推荐

关于我们

帮助中心

商务合作

点击这里给我发消息

关注微信公众号

Copyright © 2016-2017 i创学院 - 上海享渔教育科技有限公司 Powered by Discuz!     ( 沪ICP备16033954号-1 )