我正在尝试找出如何与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
要控制方向,我可以为具有不同角度值的servo2
和C#
创建单独的函数void,但是我不知道如何从{{1 }}应用程序。我不确定,例如,如果我想使用Arduino uploaded code
和{从C#
控制servo2
,我必须在pin 11
和trackBar2
中添加什么来自servo1
和pin 9
的{1}}:
trackBar1
任何建议,指南或示例都将非常有用
答案 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());