我有一个 Arduino 与伺服(引脚 9、5.5v 和接地)连接,它将在 Arduino 上运行任何 ol' 测试;但是,当我发送串行命令来移动它时,什么也没有发生。rx 灯闪烁,所以我知道 Arduino 正在获取信息。我认为问题在于我的字节转换。
代码时间:
Arduino代码:
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created
void setup()
{
myservo.attach(9);
// attaches the servo on pin 9 to the servo object and sets the rotation to 0
myservo.write(0);
}
int pos1= 0;
int pos2= 0;
int pos3= 0;
int totalMove = 0;
void loop()
{
if (Serial.available() > 0 && totalMove > 0)
{
pos1 = Serial.read() - '0';
// pos2 = Serial.read() - '0';
// pos3 = Serial.read() - '0';
// totalMove = ((pos3) + (pos2*10) + pos1*100);
myservo.write(pos1);
}
}
您会看到其他 pos 持有者,因为最终我希望能够发送大于 9 的值,但是现在我只需要让它响应 :)
C#代码:
public void moveServo()
{
if (!serialPort1.IsOpen)
{
Console.WriteLine("Oops");
serialPort1.Open();
return;
}
serialPort1.DtrEnable = true;
serialPort1.DataReceived +=
new System.IO.Ports.SerialDataReceivedEventHandler(
serialPort1_DataReceived);
serialPort1.Write(new byte[] {57}, 0, 1);
}
有任何想法吗?