查看: 230245|回复: 202

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】108种传感器模块系列实验(55)---DHT11温湿度传感器
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    【Arduino】108种传感器模块系列实验(40)---旋转编码器模块
    【Arduino】108种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    基于机器视觉的智能分拣机械臂
    基于机器视觉的智能分拣机
    本作品是一个基于机器视觉的智能机械臂操作平台,其采用atmega32单片机作为主控制系统
    请问HMC5883L的三个数据到底代表什么,如何做成指南针?
    请问HMC5883L的三个数据到
    或者哪位朋友有资料给个连接?网上愣是没找到。都只介绍了如何读取数据。我想做成图
    关于atmega328p-pu 地的问题
    关于atmega328p-pu 地的问
    请问图中ADC的地和VCC的地在单片机内部有连接吗?本人初学者,因为需要控制模拟电路,
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表