Arduino控制舵机详解(含代码)
目 录
1. 舵机简介
2 硬件电路连线
3 项目:舵机来回转动
3.1 控制代码
3.2 仿真结果
4 项目2:光控舵机
4.1 硬件电路连线
4.2 控制代码
4.3 仿真结果
5 项目3:串口控制舵机和内置LED灯
5.1 仿真结果
6 用到的函数解释
1. 舵机简介
舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。
舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分。电机有三根线引出,分别接VCC、GNG和信号线。主要有两种引出线的格式:
- 棕、红、橙(棕色连接GND、红色连接VCC、橙色连接信号);
- 红、黑、黄(红色连接VCC、黑色连接GND、黄色连接信号)。
2 硬件电路连线
Arduino |
功能 | 舵机 | 功能 |
VCC | 正极 | 红色 | 正极 |
GND | 负极 | 棕色 | 负极 |
D9(PWM) | 数字引脚(PWM) | 橙色(信号传输) | 信号输入 |
3 项目:舵机来回转动
实现功能:舵机0~180°来回转动。
3.1 控制代码
#include <Servo.h> //加载文件库
int pos = 0;
Servo myservo;void setup()
{myservo.attach(9, 500, 2500); //修正脉冲宽度
}void loop()
{for (pos = 0; pos <= 180; pos += 1) { //pos+=1等价于pos=pos+1myservo.write(pos);delay(15); }for (pos = 180; pos >= 0; pos -= 1) {myservo.write(pos);delay(15); }
}
3.2 仿真结果
4 项目2:光控舵机
实现功能:随着光照强度增加,舵机跟着转动。A0产生的模拟值大于500时,内置的13引脚的可编程LED发光。
4.1 硬件电路连线
Arduino |
功能 | 舵机 | 功能 |
VCC | 正极 | 红色 | 正极 |
GND | 负极 | 棕色 | 负极 |
D9(PWM) | 数字引脚(PWM) | 橙色(信号传输) | 信号输入 |
A0 | 模拟接口(光敏电阻) |
4.2 控制代码
#include <Servo.h>
const int sensorPin = A0; int led=13;
int pos = 0;
Servo myservo;//创建舵机对象void setup(){myservo.attach(9, 500, 2500);pinMode(led,OUTPUT);Serial.begin(9600);
}void loop(){int val=analogRead(sensorPin);if(val>500){digitalWrite(led,HIGH);}else{digitalWrite(led,LOW);}int yp=map(val,0,1023,0,180);//数值转换,将[0,1023]产生的模拟值转换成[0,180]中的值Serial.println(yp);myservo.write(yp);delay(10);
}
4.3 仿真结果
5 项目3:串口控制舵机和内置LED灯
实现功能如下:
串口输入2,led点亮,同时串口打印“ON”,舵机转动到90°。
串口输入4,led熄灭,同时串口打印“OFF”,舵机转动到180°
#include <Servo.h>
int led4=4; int led=13;
Servo myservo;//创建舵机对象void setup(){myservo.attach(9, 500, 2500);pinMode(led,OUTPUT);pinMode(led4,OUTPUT);Serial.begin(9600);
}void loop(){if(Serial.available()>0){char c=Serial.read();if(c=='2'){digitalWrite(led,HIGH);digitalWrite(led4,HIGH);myservo.write(90);Serial.println("ON");}else if(c=='4'){digitalWrite(led,LOW);digitalWrite(led4,LOW);myservo.write(180);Serial.println("OFF");}}
}
5.1 仿真结果
6 用到的函数解释
- Serial.begin()是串口初始化函数,设置传输速率。
- Serial.println()与Serial.print()的区别在于前者具备换行功能,后者不具备。
- Servo.h是舵机库文件,直接在Aruidno IDE中可以加载。
- Servo myservo为创建对象,本质就是一个名称,myservo可自己命名。
- myservo.attach(9)表示控制舵机的引脚。
- myservo.write(45)表示舵机旋转到45°的位置,而不是旋转了45°。
- map()函数的使用率比较高,将某一区间的值转换为另外区间的值。
语法格式为: val =map(value, fromLow, fromHigh, toLow, toHigh);
val,value为同类型变量,fromHigh与fromLow为变量a的最大与最小值,toHigh与toLow为val变量的最大与最小值。map()函数根据范围比例即可将某一区间的值缩放至另外区间的值,并将值赋予val。
Arduino控制舵机详解(含代码)相关推荐
- python实现自动答题详解含代码
预备软件(这几个都百度一下,攻略多,不难): 1.intellij idea下载 2.python下载 3.requests.AIP .PIL安装 4.adb下载(用于手机截图) https://ww ...
- c语言实现蛇形矩阵(详解含代码)
大家好,我是诚挚的乔治 前言: 本次蛇形矩阵我将以两种方法来实现,即非递归和递归 非递归的实现: #define right 1 #define down 2 #define left 3 #def ...
- Arduino :PWM详解和电路搭建以及示例代码
Arduino :PWM详解和电路搭建以及示例代码 PWM 调制介绍 脉冲宽度调制是PWM的全称.它是数字编码的模拟信号电平.由于计算机不能输出模拟电压而只有0或5V数字电压值,我们可以应用调制方波占 ...
- 数学建模_随机森林分类模型详解Python代码
数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...
- Zabbix+MatrixDB大规模监控与分析解决方案详解(含PPT)
首先,谢谢原作者:(此文为转载的文章,现将原地址贴出如下:以下文章来源于yMatrix,作者MatrixDB团队Zabbix+MatrixDB大规模监控与分析解决方案详解(含PPT)) 更多精彩Zab ...
- 组合模式详解附有代码案例分析(包含透明组合模式、安全组合模式的代码示例)
组合模式 一.组合模式的概念和角色 (一).组合模式的概念 (二).组合模式的角色 二.组合模式的应用场景 三.透明组合模式的代码示例 四.安全组合模式的代码示例 五.组合模式的优缺点 (一).优点 ...
- 模板方法模式详解附有代码案例分析(包含模板方法模式重构JDBC操作业务代码示例)
模板方法模式 一.模板方法模式的概念和角色 (一).模板方法模式的概念 (二).模板方法模式的角色 二.模板方法模式的应用场景 三. 模板方法模式的代码示例 四.模板方法模式重构JDBC操作业务 五. ...
- 【分享实录】BANCOR算法详解及代码实现
1 活动基本信息 1)主题:[区块链技术工坊22期]BANCOR算法详解及代码实现 2)议题: BANCOR算法的特点和优劣势 BANCOR算法和举例 如何加入BANCOR.NETWORK交易所 如何 ...
- 【区块链技术工坊22期实录】王登辉:BANCOR算法详解及代码实现
1,活动基本信息 1)题目: [区块链技术工坊22期]BANCOR算法详解及代码实现 2)议题: 1)BANCOR算法的特点和优劣势 2)BANCOR算法和举例 3)如何加入BANCOR.NETWOR ...
最新文章
- linux统计日志,Linux一些常使用的统计日志 方法
- eclipse插件egit安装使用
- link time code generation
- 借助 Cloud Toolkit 快速创建 Dubbo 工程
- mysql查一个表3到5行的数据类型_MySQL入门(三) 数据库表的查询操作【重要】
- JAVA读写文件模板
- 无法回应的ARP请求包导致的网站缓慢问题排错
- 盐城计算机考试时间安排,2019盐城中考具体时间安排 什么时候考试
- GARFIELD@02-21-2005
- Android的数据库(SQLite)学习
- 成果展示 | 大数据应用开发平台DWF
- 微信会员卡管理系统:店铺智慧化管理和营销,只需一款软件
- 科技感十足五款APP软件,让你的手机不再低调!
- 数据库之考勤管理系统
- ded汉语意思_DED是什么意思
- 微信小程序如何进行反编译详细教程
- 关于“知识共享”的几个基本概念
- 判断一个数是否为整数、正整数、小数通用算法
- UEFI-win10-EDK2搭建
- Ssd202 FUART 测试环境搭建