伺服舵机 SG90
SG90 舵机可以在 0~180 度之间自由活动。我们只需要指定当前的值即可操控。
Servo 库文件使用
使用servo库来发送舵机控制信号一般需要四个步骤:
1、 首先要告诉Arduino编程器,希望在代码开始时,即setup函数之前,声明使用Servo库函数。
#include <Servo.h>
2、 在#include和setup函数之间为要发送的信号命名servo库的实例。如下servoLeft就是指定的实例名称。
Servo servo;
3、 在setup函数中,使用给出的舵机信号的名称后跟一个点,然后通过附加函数attach()调用信号引脚。这个例子告诉系统舵机信号 servoLeft 应该通过数字引脚13来传输。
servo.attach(13);
5、write() 函数, 作用是将一个角度值写入舵机,设置轴转动的角度(该值是指角度),0为在一个方向全速转动,180为在另一个方向上全速转动,接近90为复位。
servo.write(90);
6、attached()函数,用于检测servo变量是否正确连接至Arduino对应引脚上。返回值为 true 和 false 。
servo.attached()
7、detach()函数, 作用是从对应引脚上分离舵机变量。如果要将所有舵机变量分离,则使用analogWrite()函数将引脚9和引脚10用于PWM输出。
servo.detach()
8、read()函数, 用于读取舵机的当前角度值(传递给上次调用write()的值)。
servo.read()
实战舵机
#include <Servo.h>
Servo myservo;
void setup() {
myservo.attach(9);
}
void loop() {
myservo.write(180);
}
效果:
与电位器联合使用
接线图:
代码:
其中我使用了 int v2 = map(v1,0,1023,0,180); 函数,其作用是将 0~1023 的输入限定在 0~180 的输出。
因为 A0 的输入范围在 0~1023 之间,但是舵机的角度却在 0~180 之间。所以需要 map 函数做限制。
#include <Servo.h>
Servo servo;
void setup() {
pinMode(3,OUTPUT);
servo.attach(3);
}
void loop() {
int v1 = analogRead(A0);
int v2 = map(v1,0,1023,0,180);
servo.write(v2);
}