小R科技-WIFI机器人网·机器人创意工作室-中国FPV

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 88|回复: 0

基于Arduino智能小车驱动扩展板-直流电机控制

[复制链接]
发表于 2017-10-6 15:55:31 | 显示全部楼层 |阅读模式
本帖最后由 robotStudio 于 2017-10-6 15:55 编辑

上一篇:点亮LED
今天给大家分享一下Arduino智能小车驱动扩展板驱动两路直流电机,为了节省Arduino的IO口,我们使用了与非门74HC00芯片,程序只占用Arduino Uno R3的4个引脚,
PWMA:D5(~)引脚
DIRA:D4引脚
PWMB:D6(~)引脚
DIRB:D7引脚
驱动直流电机_副本.jpg
接下来我们具体看一下逻辑控制真值表:

其中: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);
}
}



精彩继续。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

猜您想找.......上一条 /10 下一条

QQ|QQ技术咨询Ⅰ|QQ技术咨询Ⅱ|QQ技术咨询Ⅲ|QQ技术咨询Ⅳ|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室-中国FPV ( 粤ICP备12019445

GMT+8, 2017-10-23 12:25 , Processed in 1.196413 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表