查看: 218455|回复: 196

Arduino教程(提高篇)——舵机的驱动

  [复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2012-5-4 18:04 | 显示全部楼层 |阅读模式
    本帖最后由 奈何col 于 2012-12-13 00:41 编辑

           在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。
           舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。

    1.舵机与控制原理

    2.servo类介绍
    servo类下有以下成员函数
    attach()//连接舵机
    write()//角度控制
    writeMicroseconds()//
    read()//读上一次舵机转动角度
    attached()//
    detach()//断开舵机连接
    如果以上内容对你有帮助,你可以通过打赏支持作者

    4人打赏

  • TA的每日心情

    1556084771
  • 签到天数: 15 天

    发表于 2012-6-13 10:40 | 显示全部楼层
    为了给您顶贴,俺们还特地去注册。。
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2012-5-4 18:04 | 显示全部楼层
    本帖最后由 奈何col 于 2012-5-9 10:46 编辑

    普通舵机有3根线:GND(黑)、VCC(红)、Signal(黄),一般情况下,我们建议为舵机单独供电,此处实验为了图方便,用arduino为舵机供电。  

    3.实例1

    需要的器材:
    arduino控制器、舵机、杜邦线若干
    首先将舵机如下图连接:

    下载以下例程(程序可以在IDE>File>Examples>Servo>Sweep中找到,我只是做个中文介绍)
    1. #include <Servo.h>
    2. Servo myservo;  //创建一个舵机控制对象
    3.                           // 使用Servo类最多可以控制8个舵机
    4. int pos = 0;    // 该变量用与存储舵机角度位置
    5. /*~~~~~~~~~~~~~~~~~~~~~~~~~~华丽的分割线~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    6. void setup()
    7. {
    8.   myservo.attach(9);  // 该舵机由arduino第九脚控制
    9. }
    10. /*~~~~~~~~~~~~~~~~~~~~~~~~~~华丽的分割线 ~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    11. void loop()
    12. {
    13.   for(pos = 0; pos < 180; pos += 1)  // 从0度到180度运动
    14.   {                                                     // 每次步进一度
    15.     myservo.write(pos);        // 指定舵机转向的角度
    16.     delay(15);                       // 等待15ms让舵机到达指定位置
    17.   }
    18.   for(pos = 180; pos>=1; pos-=1)   //从180度到0度运动  
    19.   {                                
    20.     myservo.write(pos);         // 指定舵机转向的角度
    21.     delay(15);                        // 等待15ms让舵机到达指定位置
    22.   }
    23. }
    复制代码

    4.实例2
    需要的器材:
    arduino控制器、舵机、电位器、杜邦线若干
    首先将舵机如下图连接:

    下载以下例程(程序可以在IDE>File>Examples>Servo>Knob中找到)
    1. #include <Servo.h>

    2. Servo myservo;  
    3. //创建一个舵机控制对象  

    4. int potpin = 0;  //该变量用于存储用电位器读出的模拟值
    5. int val;   
    6. // 该变量用与存储舵机角度位置  

    7. void setup()
    8. {
    9.   myservo.attach(9);  
    10. // 该舵机由arduino第九脚控制  
    11. }

    12. void loop()
    13. {
    14.   val = analogRead(potpin);            //读取电位器控制的模拟值 (范围在0-1023)
    15.   val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180)
    16.   myservo.write(val);                  
    17. // 指定舵机转向的角度  
    18.   delay(15);                           
    19. // 等待15ms让舵机到达指定位置   
    20. }
    复制代码



    5.其他驱动方法:

    传送门:
    arduino驱动舵机,不调用库函数:http://www.arduino.cn/thread-45-1-1.html
    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2012-5-10 12:51 | 显示全部楼层
    更新了一大部分~~~{:soso__14610756010512383460_3:}
    如果以上内容对你有帮助,你可以通过打赏支持作者

    该用户从未签到

    发表于 2012-5-11 15:47 | 显示全部楼层
    add..

    futaba 白红黑 白——信号 红——正极 黑——负极

    JR       橙红褐 橙——信号 红——正极 褐——负极

    该用户从未签到

    发表于 2012-5-11 15:47 | 显示全部楼层
    add..

    futaba 白红黑 白——信号 红——正极 黑——负极

    JR       橙红褐 橙——信号 红——正极 褐——负极

    该用户从未签到

    发表于 2012-5-12 21:37 | 显示全部楼层
    几天前写错程序  舵机就坏了{:soso_e109:}
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2012-5-12 22:14 | 显示全部楼层
    大鹏·Roc 发表于 2012-5-12 21:37
    几天前写错程序  舵机就坏了

    是插错了吧~~~
    如果以上内容对你有帮助,你可以通过打赏支持作者

    该用户从未签到

    发表于 2012-5-12 23:00 | 显示全部楼层
    奈何col 发表于 2012-5-12 22:14
    是插错了吧~~~

    没加 delay
    就悲剧了
  • TA的每日心情
    郁闷
    2015-4-5 18:14
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2012-5-23 23:42 | 显示全部楼层
    谢谢版主
  • TA的每日心情
    开心
    2019-4-24 13:46
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2012-6-13 10:32 | 显示全部楼层
    最方便的方法~ 我感觉"单独供电"要加粗加红~
    打赏作者鼓励一下!
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    有对屏幕了解的大神吗?
    有对屏幕了解的大神吗?
    这种屏幕可以用arduino板或者树莓派做出来吗?小白对这方面一无所知,求指点
    编写了个贪食蛇小程序
    编写了个贪食蛇小程序
    8*8双色3mm红蓝雾状发光二极管 用595驱动的
    Adruino小型自平衡机器人EVA(+硬件+源代码+3D文件)
    Adruino小型自平衡机器人E
    [*]2个月前做的小机器人,在CSDN个人博客上发了,从没接触过PID、3D打印、电机等,就
    超萌机器人  pando
    超萌机器人 pando
    ## 准备工作准备好如下材料: · DFRobot Romeo BLE mini V2.0 控制器 × 1·
    红外模块在接收时码值变动
    红外模块在接收时码值变动
    在使用arduino连接一个红外接收后,下载的红外模块的库IRremote,在使用时发现,遥控
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表