直流伺服电机

伺服(servo)

颜色 功能
棕色 GND
红色 VCC
橙色 信号(PWM)

控制电路电机电位器(接受反馈)形成闭环系统

实现代码

创建对象

1
4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <Servo.h>

Servo myServo; //创建Servo对象myServo

int dataIndex = 0; //创建整数型变量,存储输入数据序列号
void setup() {
myServo.attach(6);
Serial.begin(9600); //启动串口通讯,传输波特率9600
Serial.println("Please input serial data.");
}

void loop() { // 检查串口缓存是否有数据等待传输
if ( Serial.available()>0 ) {
dataIndex++; // 处理数据序列号并通过串口监视器显示
Serial.print("dataIndex = ");
Serial.print(dataIndex);
Serial.print(" , ");

int pos = Serial.parseInt(); // 解析串口数据中的整数信息并赋值给变量pos
Serial.print("Set servo position: ");
Serial.println(pos); // 通过串口监视器显示变量pos数值
myServo.write(pos); // 使用pos变量数值设置伺服电机
delay(15);
}
}

 

控制多个舵机

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
Serial-Servo-2
使用
本示例程序旨在演示如何通过串口监视器控制4个伺服电机(舵机)。

This example code is in the public domain.
*/
#include <Servo.h>

Servo base, fArm, rArm, claw; //建立4个电机对象

int dataIndex = 0;
void setup() {
base.attach(11); // base 伺服电机连接引脚11 电机代号'b'
rArm.attach(10); // rArm 伺服电机连接引脚10 电机代号'r'
fArm.attach(9); // fArm 伺服电机连接引脚9 电机代号'f'
claw.attach(6); // claw 伺服电机连接引脚6 电机代号'c'
Serial.begin(9600);
Serial.println("Please input serial data.");
}

void loop() {
if (Serial.available()) { // 检查串口缓存是否有数据等待传输
char servoName = Serial.read(); //获取电机指令中电机编号信息

Serial.print("servoName = ");
Serial.print(servoName);
Serial.print(" , ");

int data = Serial.parseInt(); //获取电机指令中电机角度信息

switch(servoName){ //根据电机指令中电机信息决定对哪一个电机进行角度设置
case 'b': // 电机指令b,设置base电机角度
base.write(data);
Serial.print("Set base servo value: ");
Serial.println(data);
break;
case 'r': // 电机指令r,设置rArm电机角度
rArm.write(data);
Serial.print("Set rArm servo value: ");
Serial.println(data);
break;
case 'f': // 电机指令f,设置fArm电机角度
fArm.write(data);
Serial.print("Set fArm servo value: ");
Serial.println(data);
break;
case 'c': // 电机指令c,设置claw电机角度
claw.write(data);
Serial.print("Set claw servo value: ");
Serial.println(data);
break;
}
}
}