我想弄清楚,如何从winfroms
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());
}
}
Arduino代码使用pin 9
和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
创建具有不同角度值的单独函数void,但我无法弄清楚,如何从C#
应用程序获得每个伺服的单独控制。我不确定,我必须在Arduino uploaded code
和C#
添加,例如,如果我想从servo2
控制pin 11
trackBar2
和servo1
与pin 9
trackBar1
:private void trackBar2_Scroll(object sender, EventArgs e)
{
if (myport.IsOpen)
{
myport.WriteLine(trackBar2.Value.ToString());
}
}
:
// 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());
任何建议,指南或示例都会非常有帮助
一种选择是,而不是只读取你的Arduino上的内注,等待字符'A'或'B',然后读取一个int。如果字符是'A'移动servo1,如果字符是'B'移动servo2。在.net应用中,在发送轨迹栏值之前写入“A”或“B”
注意:未经测试
qazxswpoi