|
本帖最后由 robotStudio 于 2017-10-6 15:55 编辑
上一篇:点亮LED
今天给大家分享一下Arduino智能小车驱动扩展板驱动两路直流电机,为了节省Arduino的IO口,我们使用了与非门74HC00芯片,程序只占用Arduino Uno R3的4个引脚,
PWMA:D5(~)引脚
DIRA:D4引脚
PWMB:D6(~)引脚
DIRB:D7引脚
接下来我们具体看一下逻辑控制真值表:
其中:X表示任意电平,1表示高电平,0表示低电平。
程序源码:
int E1 = 5; //A电机使能端
int E2 = 6; //B电机使能端
int M1 = 4; //定义电机控制接口
int M2 = 7; //定义电机控制接口
void setup() {
pinMode(M1,OUTPUT);
pinMode(M2,OUTPUT);
}
/*
停止
*/
void MOTOR_GO_STOP(void)
{
digitalWrite(E1,LOW);
digitalWrite(E2,LOW);
}
/*
前进
参数:x为左速度0-255;y为右速度0-255
*/
void MOTOR_GO_FORWARD(int x,int y)
{
analogWrite(E1,x);
digitalWrite(M1,HIGH);
analogWrite(E2,y);
digitalWrite(M2,LOW);
}
/*
后退
参数:x为左速度0-255;y为右速度0-255
*/
void MOTOR_GO_BACK(int x,int y)
{
analogWrite(E1,x);
digitalWrite(M1,LOW);
analogWrite(E2,y);
digitalWrite(M2,HIGH);
}
/*
左转
参数:x为左速度0-255;y为右速度0-255
*/
void MOTOR_GO_LEFT(int x,int y)
{
analogWrite(E1,x);
digitalWrite(M1,HIGH);
analogWrite(E2,y);
digitalWrite(M2,HIGH);
}
/*
右转
参数:x为左速度0-255;y为右速度0-255
*/
void MOTOR_GO_RIGHT(int x,int y)
{
analogWrite(E1,x);
digitalWrite(M1,LOW);
analogWrite(E2,y);
digitalWrite(M2,LOW);
}
void loop()
{
while(1)
{
MOTOR_GO_FORWARD(200,200);
delay(1000);
MOTOR_GO_RIGHT(200,200);
delay(1000);
MOTOR_GO_LEFT(200,200);
delay(1000);
MOTOR_GO_STOP();
delay(1000);
}
}
精彩继续。。。
|
|