用arduino控制伺服

时间:2014-06-15 13:36:51

标签: c# arduino

我试图用arduino uno和C#控制伺服,但伺服不动

这是Arduino代码:

#include <Servo.h>
Servo servoT1;

void setup()
{
  Serial.begin(9600);
   servoT1.attach(9); 
}
int i=0;
void loop()
{
   if (Serial.available() > 0)
   {
      i=Serial.read();
      i=map(i, 0, 100, 0, 179);
      servoT1.write(i);
    }
}

这是C#代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO.Ports;

namespace arduino_throttle
{
    public partial class Form1 : Form
    {
        SerialPort uno1 = new SerialPort("COM3", 9600);

        public Form1()
        {
            InitializeComponent();
        }

        private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
        {
            uno1.Open();
            uno1.Write(HScroll.ToString());
            uno1.Close();
        }
    }
}

我想通过滚动程序中的hScrollBar来设置伺服角度。

1 个答案:

答案 0 :(得分:0)

serial.read()方法返回可用的传入串行数据的第一个字节 http://arduino.cc/en/Serial/Read 但你发送字符串(字符数组) 尝试从C#只发送一个字节或字符 要做到这一点,你需要检查最大值是256

另一件事 你需要发送滚动条的值 (您将整个对象发送到字符串中)

试试这个

uno1.Write(Convert.ToByte(HScroll.value));