本帖最后由 zxnwpu 于 2013-11-20 22:28 编辑
我买了一块板子是OpenJumper Arduino,连接以后,发现电机不能转,不知道啥问题,驱动板三个跳冒拔下,in1接2,in2接4,in3接7,in4接8,ENA接5,ENB接6。。12v电源我外接了四节1.5V干电池,中间接地,OUT1234接电机,我把小车左侧电机串联接OUT1,2,右侧电机串联接OUT3,4。。。蓝牙模块接板子上的5v,GND,TX,RX。。控制器接驱动板上的5v接口,地与12v的共用。。。,不知道哪里有什么问题,求教
file:///c:/users/admin/appdata/roaming/360se6/User Data/Temp/forum.php?mod=image&aid=3182&size=300x300&key=73c4b0462f52b355&nocache=yes&type=fixnone
如下连接代码int PWMA =5; //连接小车右侧电机A的PWM控制端口到数字接口5
int IN1 =2; //连接小车右侧电机A的转向控制端口到数字接口4
int IN2=4;
int PWMB =6; //连接小车左侧电机B的PWM控制端口到数字接口6
int IN3 =7; //连接小车左侧电机B的转向控制端口到数字接口7
int IN4=8;
int PWMR=150;//设置电机初始PWM功率值
int PWML=PWMR;
int flag; //暂存变量,用于Arduino接受Andriod手机的控制字符
//初始化
void setup()
{
Serial.begin(9600); // 启动串口通信,波特率9600b/s
pinMode(IN1, OUTPUT); //直流电机驱动板的控制端口设置为输出模式
pinMode(IN2,OUTPUT);
pinMode(PWMA,OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(PWMB, OUTPUT);
}
//对直流电机驱动板的使能端口和转向端口进行设置,以使小车
//执行前进、后退、左转、右转、停止和速度切换动作。
void advance()//小车前进
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(PWMA,PWMR);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(PWMB,PWML);
}
void back()//小车后退
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(PWMA,PWMR);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(PWMB,PWML);
}
void left()//小车左转
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
analogWrite(PWMA,90);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
analogWrite(PWMB,90);
}
void right()//小车右转
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
analogWrite(PWMA,90);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
analogWrite(PWMB,90);
}
void Stop()//小车停止
{
digitalWrite(PWMA, LOW); //右电机停
digitalWrite(PWMB, LOW); //左电机停
}
//主程序
void loop()
{
//如果Arduino控制器读缓冲区中存在Andriod手机下达的字符命令
if (Serial.available()>0)
{ flag = Serial.read(); //读出Arduino控制器读缓冲区的字节
delay(5);
if(flag =='a') //如果读出的字节为“前进”标志字符'a'
{
Stop(); //小车先暂停
delay(10);
PWML=PWMR;
advance(); //小车再前进
}
else if( flag =='b') //如果读出的字节为“后退”标志字符'b'
{
Stop(); //小车先暂停
delay(10);
PWML=PWMR;
back(); //小车再后退
}
else if(flag=='m')
{
PWMR=200; //小车行驶速度切换为高速状态
PWML=PWMR;
}
else if(flag=='n')
{
PWMR=150; //小车行驶速度切换为低速状态
PWML=PWMR;
}
else if(flag=='c') //如果读出的字节为“左转”标志字符'c'
{
left(); //小车左转
}
else if(flag=='d') //如果读出的字节为“右转”标志字符'd'
{
right(); //小车右转
}
else if(flag=='s') //如果读出的字节为“停止”标志字符's'
{
Stop(); //小车停止
}
}
|