Arduino 卡片11可控舵机

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MadeInJack/article/details/51711459

1、硬件部分

通过外部信号来让舵机随着输入的改变来相应改变角度,方便做一些可控的转动装置。电位器相当于一个可变阻值的电阻,两个引脚的一边分别接5V与GND,而另一边只有单独一个引脚的接模拟口0,用于做输入信号。

 


2、软件部分

#include<Servo.h>
Servo myServo;

int potpin = 0;   //连接到模拟0脚
int val;          //从模拟口0读到的值

void setup() {
  myServo.attach(9);
}

void loop() {
  val = analogRead(potpin);
  val = map(val,0,1023,0,178);    //通过MAP函数进行数值转换
  myServo.write(val);             //给舵机写入角度值并等待使其转到
  delay(15);
}

3、核心回顾

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


这里主要讲下map函数。
函数格式如下:
map(value, fromLow, fromHigh, toLow, toHigh)

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

map函数参数含义:
value:需要映射的值 
fromLow:当前范围值的下限 
fromHigh:当前范围值的上限 
toLow:目标范围值的下限 
toHigh:目标范围值的上限


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

y = map(x, 1, 50, 50, 1);
y = map(x, 1, 50, 50, -100);
val = map(val, 0, 1023, 0, 179);

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

猜你喜欢

转载自blog.csdn.net/MadeInJack/article/details/51711459