大数跨境
0
0

【基础系列教程】项目十一:可控舵机

【基础系列教程】项目十一:可控舵机 DF创客社区
2020-10-06
1
导读:这期将进一步地通过外部信号来让舵机随着输入的改变来相应改变角度,方便做一些可控的转动装置。
【点击上方「蓝字」关注DF,一起成为技术颜控!】

在前面一个项目中,我们知道了如何让舵机动起来,这里将进一步的通过外部信号来让舵机随着输入的改变来相应改变角度,方便做一些可控的转动装置。我们这里通过一个可变电阻——电位器,来控制舵机。当然你也可以通过其他的模拟量或者数字量来控制舵机。模拟量的话,比如改造一下前面的感光灯,变成一个会动的感光灯。数字量的话,比如通过一个按钮,倾斜开关等等,一旦触发开关,就让舵机转动,可以有很多玩儿法。再给舵机加个外壳,让它更具生命力。

所需元件

硬件连接

与前面一节不同处在于多了一个电位器,电位器相当于一个可变阻值的电阻,两个引脚的一边分别接5V与GND,而另一边只有单独一个引脚的接模拟口0,用于做输入信号。

图 11-1可控舵机连线图

输入代码

样例代码11-1

//项目十一 可控舵机
#include <Servo.h> // 声明调用Servo.h库
Servo myservo; // 创建一个舵机对象
int potpin = 0// 连接到模拟口0 
int val; //变量val用来存储从模拟口0读到的值
void setup() 
 myservo.attach(9); //将引脚9上的舵机与声明的舵机对象连接起来

void loop() 
 val = analogRead(potpin); //从模拟口0读值,并通过val记录
 val = map(val, 010230179); //通过map函数进行数值转换
 myservo.write(val); // 给舵机写入角度
 delay(15); // 延时15ms让舵机转到指定位置 
}

下载代码,成功后,旋转电位器,看看舵机是不是随着电位器转动。

代码回顾

代码的开始部分还是需要调用<Servo.h>库,并创建相应的对象。同时,需要一个模拟口用来读取电位器的值,我们这里用变量potPin代表模拟口0。

这里主要讲下map函数。

函数格式如下:

map函数的作用是将一个数从一个范围映射到另外一个范围。 也就是说,会将 fromLow 到 fromHigh 之间的值映射到 toLow 在 toHigh 之间的值。

map函数参数含义:

  • value:需要映射的值
  • fromLow:当前范围值的下限
  • fromHigh:当前范围值的上限
  • toLow:目标范围值的下限
  • toHigh:目标范围值的上限

map的神奇之处还在于,两个范围中的“下限”可以比“上限”更大或者更小,因此map()函数可以用来翻转数值的范围,可以这么写:

这个函数同样可以处理负数,请看下面这个例子:

所以,回到代码中,我们是想将模拟口读到的0~1023的值,转换为舵机的0~180°。

硬件回顾

电位器

电位器可以理解为个电阻,只是这个电阻阻值可变。我们这里可调节的范围是0~10KΩ。电阻两端接电源,通过中间引脚调节阻值,随着电阻值的改变而带动电压变化。我们用模拟口0读取到这个变化中的电压值,并转换为对应的舵机的角度值。这就是整个的控制过程。

电位器在电路上的表示的图标为右图,分别对应器件上的3个引脚。

简单的看下原理,不知道还记不记得在第九个项目中讲到的分压原理。电位器用的同样是分压原理。我们可以理解为,电位器被拆分为上下两个电阻R1和R2,随着转动电位器,上下阻值发生变化,从而对应的输出电压就不同。我们可以想象成切蛋糕,分到的蛋糕越多(电阻),吃下去的能量(电压Vout)也就越大。电压值大小的变化可以直接通过模拟口读到的值(0~1023)反应出来。

- END -

硬件军火库


DFRduino UNO R3

Proto Shield

高品质面包线(30根-公公头)

DFRobot DF9GMS 180° 微型舵机


点击了解详情👆


大家有什么想法,或是对文章的指正,都欢迎在下方留言

学有余力的小伙伴,可以点击阅读原文,到社区继续学习!




 往期回顾 




【基础系列教程】初识Arduino

【基础系列教程】项目一:LED闪烁

【基础系列教程】项目二:S.O.S求救信号器

【基础系列教程】项目三:互动交通信号灯

【基础系列教程】项目四:呼吸灯

【基础系列教程】项目五:炫彩RGB LED

【基础系列教程】项目六:报警器

【基础系列教程】项目七:温度报警器

【基础系列教程】项目八:震动传感器

【基础系列教程】项目九:感光灯

【基础系列教程】项目十:舵机初动


点击阅读👆


【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读2.4k
粉丝0
内容1.3k