Arduino Uno 使用串口 控制舵机角度
目录
实例效果
通过使用Arduino IDE的串口监视器, 发送角度值, 从而控制舵机。
本次实例,涉及到了串口的数据读取与发送。 对以后的实现串口通信,可借鉴参考。
更正1,在视频中,程序的命名是想输入「arduino_serial_control_servo」 更正2,在视频中有可以看到发送“90”,程序串口却返回分别是“9”和“0”,在程序中改动两个地方,第一在读取串口的循环中增加delay(10),第二是在最后一个delay(10),改为100,感觉这样设定串口的接收更稳定。
元件说明
技术参数
产品尺寸:323012mm 工作扭矩:1.6kg·cm(4.8V) 使用温度:-30至+60摄氏度 死区设定:5微秒 工作电压:3.5V-6V 插头类型:JR、FUTABA通用 转动角度:180度 结构材质:塑料齿 适用范围:固定翼、直升机kt、滑翔、小型机器人机械手等模型
引脚说明
引脚 / PIN / IO | 颜色 |
---|---|
地线(GND) | 棕色或黑色 |
电源线(VCC) | 红色 |
信号线(PWM) | 橙色或白色 |
Bom表
名称 | 数量 |
---|---|
Arduino Uno | x1 |
9克舵机 | x1 |
跳线(杜邦线) | 若干 |
接线方式
程序实现
// by lingshunlab.com
// 加载 舵机 库
#include <Servo.h>
Servo myservo; // 创建一个名为 myservo 的伺服电机实例(名称可随你喜欢命名)
char inByte = 0; // 定义 串口接收的数据
int angle = 0; // 定义 角度值
String temp = ""; // 定义 临时字符变量,又或者说是缓存用的吧
void setup()
{
myservo.attach(9); // 配置myservo实例的引脚为9
Serial.begin(9600); //设置波特率,这是串口应用中很重要的数字
}
void loop()
{
while (Serial.available() > 0) // 判断串口是否有数据,若有则进入while循环
{
inByte = Serial.read();// 读取数据,串口一次只能读1个字符
temp += inByte;// 把读到的字符存进临时变量里面缓存,
// 再继续判断串口还有没有数据,知道把所有数据都读取出来
delay(10);
}
if(temp != "") // 判断临时变量是否为空,非空则进行舵机角度控制
{
angle = temp.toInt(); // 把变量字符串类型转成整型
Serial.println(angle); // 输出数据到串口上,以便观察
}
temp = "";// 清空临时变量
myservo.write(angle); // 控制舵机转动到相应的角度位置。
delay(100);// 延时100毫秒
}
接好线,
打开串口,输入0-180的数值,记得是数值哦, 因为程序没有做数据验证如果输入其他会。。。。。。大家可以自己试试看。 正常输入数值, 舵机就会转动相应的角度。
相关连接
Arduino使用舵机的第一篇,演示接线 使用 Arduino Uno 驱动舵机
串口的简单应用Arduino 串口发送与接收应用小实例