使用Arduino Uno从winfroms C#应用程序控制两个伺服器

时间:2018-09-03 13:45:56

标签: c# arduino arduino-uno servo

我正在尝试找出如何与C# C#桌面应用程序分开控制两个伺服器。

myport.PortName = "COM6"; myport.BaudRate = 9600; myport.Open(); 初始化中:

trackBar1

private void trackBar1_Scroll(object sender, EventArgs e) { if (myport.IsOpen) { myport.WriteLine(trackBar1.Value.ToString()); } } 控制:

pin 9

Arduino代码使用11#include <Servo.h> Servo servo1; Servo servo2; int val; void setup() { Serial.begin(9600); servo1.attach(9); servo2.attach(11); } void loop() { val = Serial.parseInt(); if(val != 0){ servo1.write(val); servo2.write(val); } } 移动伺服器,一个同步地移到左侧,另一个同步地移到右侧:

servo1

要控制方向,我可以为具有不同角度值的servo2C#创建单独的函数void,但是我不知道如何从{{1 }}应用程序。我不确定,例如,如果我想使用Arduino uploaded code和{从C#控制servo2,我必须在pin 11trackBar2中添加什么来自servo1pin 9的{​​1}}:

trackBar1

任何建议,指南或示例都将非常有用

1 个答案:

答案 0 :(得分:1)

一个选择是,不只是在Arduino上读取整数,而是等待字符“ A”或“ B”,然后读取一个整数。如果字符为“ A”,则移动伺服1,如果字符为“ B”,则移动伺服2。在您的.net应用中,在发送跟踪栏值之前输入'A'或'B'

注意:未经测试

// in Arduino
void loop() {
  switch(Serial.read())
  {
    case 'A':
      servo1.write(Serial.parseInt());
      break;
    case 'B':
      servo2.write(Serial.parseInt());
      break;
  }
}


// in c#
myport.Write('B')
myport.WriteLine(trackBar2.Value.ToString());