Arduino小白教程第五弹 -- 舵机控制

2014-01-153.1万
AI 快速预览详细 收起
这篇Arduino小白教程介绍了如何使用DFduino UNO R3和Micro Servo 9g进行舵机控制。首先,需要准备DFduino UNO R3和Micro Servo 9g。然后,按照图示连接舵机的三根线,红色线连到+5V,棕色线连到GND,黄色或橘色线连到数字引脚9。接着,在Arduino IDE中输入代码,使用Servo库中的myservo.write(pos)函数来控制舵机的角度。通过这个教程,初学者可以轻松学会舵机控制,为项目增加更多的互动性。
原作者:Jane 授权转载

这次要接触到舵机。舵机是一种电机,它使用一个反馈系统来控制电机的位置。可以很好掌握角度。

找到以下材料
  • 1× DFduino UNO R3
  • 1 × Micro Servo 9g


硬件连接



Arduino小白教程第五弹 -- 舵机控制图1


这个项目的连线很简单,只需按图10-1所示连接舵机三根线就可以了,连的时候注意线序,舵机引出三根线。一根是红色,连到+5V上。一根棕色(有些是黑的),连到GND。还有一根是黄色或者橘色,也有可能是白色的,连到数字引脚9。

输入代码

打开Arduino IDE,输入代码。

  1. #include <Servo.h>    // 声明调用Servo.h库
  2. Servo myservo;        // 创建一个舵机对象
  3. int pos = 0;          // 变量pos用来存储舵机位置
  4.   
  5. void setup() {
  6.      myservo.attach(9);  // 将引脚9上的舵机与声明的舵机对象连接起来
  7. }
  8.   
  9. void loop() {
  10.       // 舵机从0°转到180°,每次增加1°         
  11.     for(pos = 0; pos < 180; pos += 1){   
  12.             myservo.write(pos);              // 给舵机写入角度   
  13.             delay(15);                       // 延时15ms让舵机转到指定位置
  14.     }
  15.    
  16.      // 舵机从180°转回到0°,每次减小1°                              
  17.     for(pos = 180; pos>=1; pos-=1) {      
  18.           myservo.write(pos);            // 写角度到舵机     
  19.           delay(15);                     // 延时15ms让舵机转到指定位置
  20.     }
  21. }
复制代码

程序中还涉及了库中以下两个函数

设置引脚:
myservo.attach(pin);
选用任意的数字引脚作为attach(pin)函数中的pin脚。

读取角度:
myservo.write(pos);
该函数可以很方便的读到舵机当前角度值。

tutorials

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(10)
GD
GD
有没有图形化编程呢?
时木时木
时木时木
舵机可以和电机同时使用吗?
ktTVpObI
ktTVpObI
读取角度:
myservo.write(pos);
该函数可以很方便的读到舵机当前角度值。
是不是写错了。write()怎么是读取呢?
gada888
gada888
不错
gran
gran
怎么加入按键控制?
lianuo
lianuo
原来arduino操作舵机这么简单,节省好多时间啊。
无畏青春
无畏青春
这个零件哪能同意买 最好差不多都有
无畏青春
无畏青春
这个零件哪能同意买 最好差不多都有
Ash1
Ash1
作者
回复无畏青春
你可以淘宝搜arduino入门套件之类的,不过我推荐https://www.dfrobot.com.cn/goods-149.html 都有配套的文字和视频教程,碰到问题也可以到论坛里请教
无畏青春
无畏青春
这个零件哪能同意买 最好差不多都有
awnuxcvbn
awnuxcvbn
[code]// 声明调用Servo.h库
#include
Servo myservo; // 创建一个舵机对象
int pos = 0; // 变量pos用来存储舵机位置
void setup()
{
myservo.attach(9); // 将引脚9上的舵机与声明的舵机对象连接起来
}
void loop()
{
// 舵机从0°转到180°,每次增加1°
for(pos = 0; pos < 180; pos += 1)
{
myservo.write(pos); // 给舵机写入角度
delay(15); // 延时15ms让舵机转到指定位置
}
// 舵机从180°转回到0°,每次减小1°
for(pos = 180; pos>=1; pos-=1)
{
myservo.write(pos); // 写角度到舵机
delay(15); // 延时15ms让舵机转到指定位置
}
}[/code]
Ash1
Ash1
作者
回复awnuxcvbn
发现了 原来的代码第一行 少了#include
Jane
Jane回复awnuxcvbn
这段代码不是一样的吗?
- 没有更多了 -