离苏七 发表于 2017-6-13 18:05:09

红外避障小车+L293D驱动遇到问题

我是高中的一名学生,我和我同学想搞一个两路的红外避障小车

现在我们遇到了一个问题

就是我们写出了一个程序,原计划是红外避障模块检测到信号后转向

但实际上却发现小车一直在转圈

由于我们是自学的,对程序设计不是很理解,希望各位大佬能帮我们看一看,纠纠错

软件arduino IDE 1.8.2
硬件arduino UNO R3
驱动板L293D四路

#include <AFMotor.h>
AF_DCMotor motor1(1,MOTOR12_1KHZ);//定义电机驱动板中电机接口
AF_DCMotor motor2(2,MOTOR12_1KHZ);
AF_DCMotor motor3(3,MOTOR12_1KHZ);
AF_DCMotor motor4(4,MOTOR12_1KHZ);
int buttonpin1=3;//定义红外避障模块接口
int buttonpin2=13;
int val1;//定义数字变量
int val2;

void setup(){
motor1.setSpeed(255);//定义电机速度,255为最高
motor2.setSpeed(255);
motor3.setSpeed(255);
motor4.setSpeed(255);
pinMode(buttonpin1,INPUT);//定义避障传感器为输出接口
pinMode(buttonpin2,INPUT);

}

void loop(){
val1=digitalRead(buttonpin1);//将数字接口的值读取赋给函数
val2=digitalRead(buttonpin2);
if(val1==LOW)//当右边传感器检测有信号时
{
motor1.run(FORWARD);//小车左转
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(FORWARD);
delay(1900);//小车转90°大概要1.9s
}
else if(val2==LOW)//当左边传感器检测有信号时
{
motor1.run(BACKWARD);//小车右转
motor2.run(FORWARD);
motor3.run(FORWARD);
motor4.run(BACKWARD);
delay(1900);
}
else if((val1==LOW)&&(val2==LOW))//当左右传感器都检测有型号时
{
motor1.run(FORWARD);//小车掉头
motor1.run(FORWARD);
motor1.run(FORWARD);
motor1.run(FORWARD);
delay(1800);//转半圈
}
else//当左右传感器都没有检测有信号时
{
motor1.run(BACKWARD);//小车前进
motor2.run(BACKWARD);
motor3.run(BACKWARD);
motor4.run(BACKWARD);
delay(100);
}
}


直接把驱动板叠上UNO板的话,红外避障模块没有针脚使用。

275891381 发表于 2017-6-13 18:39:57

没针脚用啥意思,你这引脚也没用几个呀

离苏七 发表于 2017-6-13 22:28:32

是L293D驱动板直接插上UNO上的话,红外避障模块没有针脚使用了,后来想到可以焊线出来,还没有做,不知可行。

wing 发表于 2017-6-14 10:12:05

L293D四路,居然用四路?
LZ你玩全向车么?

离苏七 发表于 2017-6-14 18:35:16

四轮哪,差速转向
页: [1]
查看完整版本: 红外避障小车+L293D驱动遇到问题