目        录

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和信号线。主要有两种引出线的格式:

  1. 棕、红、橙(棕色连接GND、红色连接VCC、橙色连接信号);
  2. 红、黑、黄(红色连接VCC、黑色连接GND、黄色连接信号)。

图1 舵机实物图

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 仿真结果

图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 仿真结果

图4 光控舵机仿真

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 仿真结果

图4 串口控制舵机仿真

6  用到的函数解释

  1. Serial.begin()是串口初始化函数,设置传输速率。
  2. Serial.println()与Serial.print()的区别在于前者具备换行功能,后者不具备。
  3. Servo.h是舵机库文件,直接在Aruidno IDE中可以加载。
  4. Servo myservo为创建对象,本质就是一个名称,myservo可自己命名。
  5. myservo.attach(9)表示控制舵机的引脚。
  6. myservo.write(45)表示舵机旋转到45°的位置,而不是旋转了45°。
  7. map()函数的使用率比较高,将某一区间的值转换为另外区间的值。

语法格式为: val =map(value, fromLow, fromHigh, toLow, toHigh);

val,value为同类型变量,fromHigh与fromLow为变量a的最大与最小值,toHigh与toLow为val变量的最大与最小值。map()函数根据范围比例即可将某一区间的值缩放至另外区间的值,并将值赋予val。

Arduino控制舵机详解(含代码)相关推荐

  1. python实现自动答题详解含代码

    预备软件(这几个都百度一下,攻略多,不难): 1.intellij idea下载 2.python下载 3.requests.AIP .PIL安装 4.adb下载(用于手机截图) https://ww ...

  2. c语言实现蛇形矩阵(详解含代码)

    大家好,我是诚挚的乔治  前言: 本次蛇形矩阵我将以两种方法来实现,即非递归和递归 非递归的实现: #define right 1 #define down 2 #define left 3 #def ...

  3. Arduino :PWM详解和电路搭建以及示例代码

    Arduino :PWM详解和电路搭建以及示例代码 PWM 调制介绍 脉冲宽度调制是PWM的全称.它是数字编码的模拟信号电平.由于计算机不能输出模拟电压而只有0或5V数字电压值,我们可以应用调制方波占 ...

  4. 数学建模_随机森林分类模型详解Python代码

    数学建模_随机森林分类模型详解Python代码 随机森林需要调整的参数有: (1) 决策树的个数 (2) 特征属性的个数 (3) 递归次数(即决策树的深度)''' from numpy import ...

  5. Zabbix+MatrixDB大规模监控与分析解决方案详解(含PPT)

    首先,谢谢原作者:(此文为转载的文章,现将原地址贴出如下:以下文章来源于yMatrix,作者MatrixDB团队Zabbix+MatrixDB大规模监控与分析解决方案详解(含PPT)) 更多精彩Zab ...

  6. 组合模式详解附有代码案例分析(包含透明组合模式、安全组合模式的代码示例)

    组合模式 一.组合模式的概念和角色 (一).组合模式的概念 (二).组合模式的角色 二.组合模式的应用场景 三.透明组合模式的代码示例 四.安全组合模式的代码示例 五.组合模式的优缺点 (一).优点 ...

  7. 模板方法模式详解附有代码案例分析(包含模板方法模式重构JDBC操作业务代码示例)

    模板方法模式 一.模板方法模式的概念和角色 (一).模板方法模式的概念 (二).模板方法模式的角色 二.模板方法模式的应用场景 三. 模板方法模式的代码示例 四.模板方法模式重构JDBC操作业务 五. ...

  8. 【分享实录】BANCOR算法详解及代码实现

    1 活动基本信息 1)主题:[区块链技术工坊22期]BANCOR算法详解及代码实现 2)议题: BANCOR算法的特点和优劣势 BANCOR算法和举例 如何加入BANCOR.NETWORK交易所 如何 ...

  9. 【区块链技术工坊22期实录】王登辉:BANCOR算法详解及代码实现

    1,活动基本信息 1)题目: [区块链技术工坊22期]BANCOR算法详解及代码实现 2)议题: 1)BANCOR算法的特点和优劣势 2)BANCOR算法和举例 3)如何加入BANCOR.NETWOR ...

最新文章

  1. linux统计日志,Linux一些常使用的统计日志 方法
  2. eclipse插件egit安装使用
  3. link time code generation
  4. 借助 Cloud Toolkit 快速创建 Dubbo 工程
  5. mysql查一个表3到5行的数据类型_MySQL入门(三) 数据库表的查询操作【重要】
  6. JAVA读写文件模板
  7. 无法回应的ARP请求包导致的网站缓慢问题排错
  8. 盐城计算机考试时间安排,2019盐城中考具体时间安排 什么时候考试
  9. GARFIELD@02-21-2005
  10. Android的数据库(SQLite)学习
  11. 成果展示 | 大数据应用开发平台DWF
  12. 微信会员卡管理系统:店铺智慧化管理和营销,只需一款软件
  13. 科技感十足五款APP软件,让你的手机不再低调!
  14. 数据库之考勤管理系统
  15. ded汉语意思_DED是什么意思
  16. 微信小程序如何进行反编译详细教程
  17. 关于“知识共享”的几个基本概念
  18. 判断一个数是否为整数、正整数、小数通用算法
  19. UEFI-win10-EDK2搭建
  20. Ssd202 FUART 测试环境搭建

热门文章

  1. python学习笔记第六章文本词频统计
  2. 将VMware工作站最小化至托盘栏
  3. 利用phantomjs动态生成图片
  4. 尾部关性尾部风险平价和圣杯分布
  5. Opencv学习笔记——图像基本操作
  6. 苹果手机忘记Appid怎么办
  7. 国内60款APP在越权收集用户数据
  8. 阿里云PCDN新亮点 自动调用HTTPDNS 解决域名劫持困扰
  9. 宋宝华:让Linux的段错误(segmentation fault)不再是一个错误
  10. 似物性检测——linux下运行objectness-v2.2并分析源码(pami2012论文)