Arduino控制直流电机
2016-06-22 22:38
405 查看
今天做了使用Arduino控制直流电机,其实就是对小车的基本控制,4个电机驱动小车的4个轮子,不过我只用了两路控制信号,即同侧的两个轮子用一路信号控制。
把代码烧入Arduino后打开串口监视器,输入指令控制小车的基本运动。w是前进,s是后退,a是左转,d是右转,我的转弯是通过两侧轮子反向转动实现的,也可通过调节两侧控制信号的占空比之差是两侧轮子转速不一样来实现转弯。小车速度有3档 ,分别由输入1、2、3控制,1档最慢,2档次之,3档最快。调节速度是通过调节占空比来实现的,设置占空比我直接用analogWrite函数,很方便,也可以自己结合digitalWrite和延时来实现占空比设置
代码
int motor1=4; //右侧轮子I1 int motor2=7; //右侧轮子I2 int motor3=13; //左侧轮子I1 int motor4=12; //左侧轮子I2 int ena1=3; //右侧占空比 int ena2=5; //左侧占空比 void forward() { digitalWrite(motor1,HIGH); digitalWrite(motor2,LOW); digitalWrite(motor3,HIGH); digitalWrite(motor4,LOW); } void backward() { digitalWrite(motor1,LOW); digitalWrite(motor2,HIGH); digitalWrite(motor3,LOW); digitalWrite(motor4,HIGH); } void turnleft() { digitalWrite(motor1,HIGH); digitalWrite(motor2,LOW); digitalWrite(motor3,LOW); digitalWrite(motor4,HIGH); } void turnright() { digitalWrite(motor1,LOW); digitalWrite(motor2,HIGH); digitalWrite(motor3,HIGH); digitalWrite(motor4,LOW); } void setup() { // put your setup code here, to run once: pinMode(motor1,OUTPUT); pinMode(motor2,OUTPUT); pinMode(motor3,OUTPUT); pinMode(motor4,OUTPUT); pinMode(ena1,OUTPUT); pinMode(ena2,OUTPUT); Serial.begin(9600); //初始化端口波特率 } char var; char dir; void loop() { // put your main code here, to run repeatedly: //Serial.println("hello"); //delay(1000); while(Serial.available()) { var=Serial.read(); Serial.println(var); if(var=='w') forward(); else if(var=='s') backward(); else if(var=='a') turnleft(); else if(var=='d') turnright(); //dir=Serial.read(); else if(var=='1') { analogWrite(ena1,100); analogWrite(ena2,100); } else if(var=='2') { analogWrite(ena1,200); analogWrite(ena2,200); } else if(var=='3') { analogWrite(ena1,255); analogWrite(ena2,255); } delay(500); } }
把代码烧入Arduino后打开串口监视器,输入指令控制小车的基本运动。w是前进,s是后退,a是左转,d是右转,我的转弯是通过两侧轮子反向转动实现的,也可通过调节两侧控制信号的占空比之差是两侧轮子转速不一样来实现转弯。小车速度有3档 ,分别由输入1、2、3控制,1档最慢,2档次之,3档最快。调节速度是通过调节占空比来实现的,设置占空比我直接用analogWrite函数,很方便,也可以自己结合digitalWrite和延时来实现占空比设置
相关文章推荐
- Arduino 通过串口传值给Processing 显示
- 【转】自定义UITableViewCell控件阻挡回调不到didSelectRowAtIndexPath的解决办法
- 【转】iOS 通过xib自定义UITableViewCell【原创】
- Java优先队列(PriorityQueue)
- 347. Top K Frequent Elements
- 【转】UITableView详解(UITableViewCell
- 将十六进制的颜色字符串转为UIColor
- Count Numbers with Unique Digits
- UI控件之RatingBar(星级评分条)
- UINavigationBar 和view 重叠覆盖问题
- String、StringBuffer与StringBuilder之间区别
- request.getParameter()、request.getInputStream()和request.getReader()
- WPF中非UI线程修改UI元素
- FFMPEG Installation compile build
- uvaLive6044 Unique Path(双连通分量的应用)
- IDM 6.25build 21超精版/超晶版
- Hbuilder 常用快捷键
- IOS-UIImageView
- iOS开发 - 第02篇 - UI进阶 - 16 - 彩票(第三天)
- QtQuick UI 问答