我尝试通过带有可视C++滑块的arduino uno板来控制电机步进器。
但是舵机根本没有移动。
这里是PC端的程序:
void CENVSConfigDlg::OnBnClickedButton1()
{
SetTimer(cTimer1,80,NULL);
}
void CENVSConfigDlg::OnTimer(UINT_PTR ID)
{
if(ID==cTimer1){
DWORD nbytes;
char buf[5];
sprintf(buf, "%d n", val_test);
/* Open serial port. */
if(!WriteFile( hnd_serial, (void*)buf, 5, &nbytes, NULL )){MessageBox(L"Write Com Port fail!");return;}
}
和Arduino中的程序:
#include <Servo.h>
Servo servoMain;
int index=0;
String inputString;
void setup()
{
Serial.begin(9600);
servoMain.attach(9);
}
void loop()
{
int data;
while (Serial.available())
{
char inChar = (char)Serial.read();
if (inChar == 'n' || inChar == 'z')
{
data=stringToInt(inputString);
Serial.println(data); //
inputString="";
servoMain.write(data); //tambahannya
delay(50);
break;
}
if (inChar != 0)
{
inputString += inChar;
}
}
}
int stringToInt(String s)
{
char char_string[s.length()+1];
s.toCharArray(char_string, s.length()+1);
return atoi(char_string);
}
我认为PC正在发送数据,但是为什么电机不工作? 知道吗?
首先,串行链接是否有效? 由于硬件和软件原因,RS232 链路无法工作的方式数量是传奇。 除非你能证明硬件可以传输数据,否则查看你的专用软件是没有意义的。 如果您有示波器,请使用它来查看是否有任何内容正在传输,然后检查它是否到达 arduino 输入上的正确引脚。 如果您无法访问示波器,可以使用一个小LED和一个4.7K电阻来指示线路上有数据 - 它会随着数据闪烁。