【新手】arduino和labview控制三个直流电机的问题求大神请教!
我是完全新手,我想请教一下,我在用Uno和L293D控制三个直流电机,然后用LabVIEW编程设置个界面,这两个东西都是初学,程序方面参考了《arduino与labview开发实战》,但是l293d电机接哪些串口搞不懂所以试着编的不靠LabVIEW是可以转起来的,但是现在这个不知道是上位机出错还是下位机出错,LabVIEW运行点“前进”键就自动停止了……求指教!!谢谢!!这是我的程序
#include <AFMotor.h>
#define forward_command 0x00
#define back_command 0x10
#define stop_command 0x40
byte comdata={0};
int flag=0;
int PWM1 = 11;
int PWM2 = 3;
// define motor on channel 1 with 64KHz PWM#include <AFMotor.h>
AF_DCMotor R_motor(2, MOTOR12_64KHZ);
void receive_data(void);
void test_do_data(void);
void setup() {
Serial.begin(9600);// set up Serial library at 9600 bps
R_motor.setSpeed(200);// 设置速度,从200/255之间任意
}
void loop() {
if (Serial.available()>0)
{
receive_data();
test_do_data();
}
}
void receive_data(void)
{
int a;
for(a=0;a<3;a++)
{
comdata=Serial.read();
delay(2);
}
}
void test_do_data(void)
{
if(comdata == 0x55)
{
if(comdata == 0xAA)
{
flag=0;
switch (comdata)
{
case forward_command:// 电机前进
forward();
break;
case back_command:
back();
break;
case stop_command:
stop_motor();
break;
}
}
}
}
void forward(void)
{
R_motor.run(FORWARD);
}
void back(void)
{
R_motor.run(BACKWARD);
}
void stop_motor(void)
{
R_motor.run(RELEASE);
}
首先这么点的数据量波特率是够用的,适当的在上下位机程序里加入同等的延时程序进去,再试试吧。还有方法是加入发送指令的校验位,例如先下位机发送指令头以250(数字),下位机首先判断是不是250,如果是则接收,不是就移位一下发送下来的字节数,知道找到250位置。试试吧。 双机通信故障,“前进”有问题吗?
页:
[1]