【问题标题】:Control two servos from winfroms C# application with Arduino Uno使用 Arduino Uno 从 winforms C# 应用程序控制两个舵机
【发布时间】:2018-09-03 13:45:56
【问题描述】:

我在想,如何从winfromsC#桌面应用程序中分别控制两个舵机。

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());
     }
}

Arduino 代码用pin 911 移动舵机,一个向左,一个花药向右侧同步:

#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);
  }
}

为了控制方向,我可以为 servo1servo2 创建具有不同角度值的单独函数 void,但我不知道如何从 C# 应用程序中获得对每个伺服的单独控制。我不确定,我必须在Arduino uploaded codeC# 中添加什么,例如,如果我想从pin 11trackBar2 控制servo2servo1pin 9trackBar1

private void trackBar2_Scroll(object sender, EventArgs e)
{
    if (myport.IsOpen)
    {
        myport.WriteLine(trackBar2.Value.ToString());
    }
}

任何建议、指南或示例都会非常有帮助

【问题讨论】:

  • 一个选项是,而不是仅仅在您的 Arduino 上读取整数,而是等待字符“A”或“B”,然后读取一个整数。如果字符是“A”,则移动伺服1,如果字符是“B”,则移动伺服2。在您的 .net 应用中,在发送轨迹栏值之前写入“A”或“B”。
  • 既然你想发送多个值,你应该设计一个协议。例如,您可以始终发送所有伺服值,或者您可以发送伺服 ID 和值。请注意,如果您打算稍后再做更多,您可能希望相应地使您的协议可扩展。
  • @ikkentim 你好,我是 Arduino 和控制器的新手,我不知道该怎么做,你能提供任何示例指南,我必须在哪里发送这个变量 A 和B 来自 C# 并在上传的代码中获取它?
  • @Fildor 你好,我是 Arduino 的新手,你能提供任何示例指南,说明如何设计协议以从 C# 发送伺服值或伺服 ID 并在上传的代码中获取它吗?
  • 我首先发现了这个。 arduino.stackexchange.com/questions/4214/… 无论如何搜索 Arduino SE 可能是个好主意。

标签: c# arduino arduino-uno servo


【解决方案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());

【讨论】:

  • 谢谢,很有用的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
相关资源
最近更新 更多