arduinoPWM电机调速数码管档位显示项目教程.docx

上传人:b****7 文档编号:25538656 上传时间:2023-06-09 格式:DOCX 页数:9 大小:1.06MB
下载 相关 举报
arduinoPWM电机调速数码管档位显示项目教程.docx_第1页
第1页 / 共9页
arduinoPWM电机调速数码管档位显示项目教程.docx_第2页
第2页 / 共9页
arduinoPWM电机调速数码管档位显示项目教程.docx_第3页
第3页 / 共9页
arduinoPWM电机调速数码管档位显示项目教程.docx_第4页
第4页 / 共9页
arduinoPWM电机调速数码管档位显示项目教程.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

arduinoPWM电机调速数码管档位显示项目教程.docx

《arduinoPWM电机调速数码管档位显示项目教程.docx》由会员分享,可在线阅读,更多相关《arduinoPWM电机调速数码管档位显示项目教程.docx(9页珍藏版)》请在冰豆网上搜索。

arduinoPWM电机调速数码管档位显示项目教程.docx

arduinoPWM电机调速数码管档位显示项目教程

基于Arduino的PWM电机调速+数码管档位显示实例教程

0引言

本实例适用于Arduino/机器人编程(创客)爱好者完成初级知识学习后,通过实际的综合项目训练,达到融会贯通解决实际问题的能力。

实例和代码均经本人测试无误,供有兴趣的朋友参考探讨。

1功能

对直流电机转速进行PWM调节控制,设为九档(档位通过1位数码管进行显示),红色按键每按下一次加一档;黑色按键每按下一次减一档。

2工作原理

通过Arduino端口的脉宽调制输出功能,对直流电机的工作电压进行脉宽调制,从而改变电机的工作电压,达到调试目的。

本实例采用ArduinoUNO自带5V电源,分为九档,并通过一位数码管显示出来。

3需要的组件

Arduinounox1;

直流小电机x1;

按键x2;

一位数码管x1;

ULN2003电机驱动芯片x1;

导线若干

4连线

数码管:

定义数字接口9连接a段数码管,数字接口11连接b段数码管,数字接口4连接c段数码管,数字接口5连接d段数码管

,数字接口6连接e段数码管,数字接口12连接f段数码管,数字接口13连接g段数码管,小数点位该项目不用,直接接高电平5v即可。

ULN2003:

电机负极接到驱动芯片in4引脚,in4再接到ArduinoUNO的数字10端口。

按键:

加速按键(红色)使用数字口7,减速按键(黑色)使用数字口8。

5代码

inta=9;//定义数字接口9连接a段数码管

intb=11;//定义数字接口11连接b段数码管

intc=4;//定义数字接口4连接c段数码管

intd=5;//定义数字接口5连接d段数码管

inte=6;//定义数字接口6连接e段数码管

intf=12;//定义数字接口12连接f段数码管

intg=13;//定义数字接口13连接g段数码管

//intdp=3;//该项目不用,直接接高电平5v即可

intmotor=10;//电机负极接到驱动板in4,in4再接到数字10

intkey=7;//加速按键使用数字口7

intkey2=8;//减速速按键使用数字口8

intval=0,val_0=0;//加速按键松开检测状态量

intval2=0,val2_0=0;//减速按键松开检测状态量

intspeed_0,n=0;

 

voidsetup()

{

inti;//定义变量

for(i=4;i<=6;i++)

pinMode(i,OUTPUT);//设置4~6引脚为输出模式

intj;//定义变量

for(j=11;j<=13;j++)

pinMode(j,OUTPUT);//设置11~13引脚为输出模式

pinMode(9,OUTPUT);

pinMode(motor,OUTPUT);

pinMode(key,INPUT);

pinMode(key2,INPUT);

Serial.begin(9600);

}

voiddisplay(intnum)

{

switch(num)

{

default:

{

digitalWrite(a,HIGH);

digitalWrite(b,HIGH);

digitalWrite(c,HIGH);

digitalWrite(d,HIGH);

digitalWrite(e,HIGH);

digitalWrite(f,HIGH);

digitalWrite(g,HIGH);break;

}

case0:

{

digitalWrite(a,LOW);

digitalWrite(b,LOW);

digitalWrite(c,LOW);

digitalWrite(d,LOW);

digitalWrite(e,LOW);

digitalWrite(f,LOW);

digitalWrite(g,HIGH);break;

}

case1:

{

digitalWrite(a,HIGH);

digitalWrite(b,LOW);

digitalWrite(c,LOW);

digitalWrite(d,HIGH);

digitalWrite(e,HIGH);

digitalWrite(f,HIGH);

digitalWrite(g,HIGH);break;

}

case2:

{

digitalWrite(a,LOW);

digitalWrite(b,LOW);

digitalWrite(c,HIGH);

digitalWrite(d,LOW);

digitalWrite(e,LOW);

digitalWrite(f,HIGH);

digitalWrite(g,LOW);break;

}

case3:

{

digitalWrite(g,LOW);

digitalWrite(a,LOW);

digitalWrite(b,LOW);

digitalWrite(c,LOW);

digitalWrite(d,LOW);

digitalWrite(f,HIGH);

digitalWrite(e,HIGH);break;

}

case4:

{

digitalWrite(c,LOW);

digitalWrite(b,LOW);

digitalWrite(f,LOW);

digitalWrite(g,LOW);

digitalWrite(a,HIGH);

digitalWrite(e,HIGH);

digitalWrite(d,HIGH);break;

}

case5:

{

digitalWrite(a,LOW);

digitalWrite(b,HIGH);

digitalWrite(c,LOW);

digitalWrite(d,LOW);

digitalWrite(e,HIGH);

digitalWrite(f,LOW);

digitalWrite(g,LOW);break;

}

case6:

{

digitalWrite(a,LOW);

digitalWrite(b,HIGH);

digitalWrite(c,LOW);

digitalWrite(d,LOW);

digitalWrite(e,LOW);

digitalWrite(f,LOW);

digitalWrite(g,LOW);break;

}

case7:

{

digitalWrite(a,LOW);

digitalWrite(b,LOW);

digitalWrite(c,LOW);

digitalWrite(d,HIGH);

digitalWrite(e,HIGH);

digitalWrite(f,HIGH);

digitalWrite(g,HIGH);break;

}

case8:

{

digitalWrite(a,LOW);

digitalWrite(b,LOW);

digitalWrite(c,LOW);

digitalWrite(d,LOW);

digitalWrite(e,LOW);

digitalWrite(f,LOW);

digitalWrite(g,LOW);break;

}

case9:

{

digitalWrite(a,LOW);

digitalWrite(b,LOW);

digitalWrite(c,LOW);

digitalWrite(d,LOW);

digitalWrite(e,HIGH);

digitalWrite(f,LOW);

digitalWrite(g,LOW);break;

}

}

}

voidloop()

{

//加速按键模块

val=digitalRead(key);

if(val!

=val_0)

{

delay(500);

if(val==1)

{

n++;

}

if(n>=9)n=9;

}

val_0=digitalRead(key);

//减速按键模块

val2=digitalRead(key2);

if(val2!

=val2_0)

{

delay(500);

if(val2==1)

{

n--;

}

if(n<=0)n=0;

}

val2_0=digitalRead(key2);

Serial.println(n);

display(n);

delay(20);

speed_0=n*(252/9);

analogWrite(motor,speed_0);//驱动电机旋转

}

6实物运行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1