四博智联产品售后

 找回密码
 立即注册
搜索
查看: 13654|回复: 0
打印 上一主题 下一主题

Arduino扩展板驱动舵机的简单实例

[复制链接]

31

主题

32

帖子

441

积分

版主

Rank: 7Rank: 7Rank: 7

积分
441
跳转到指定楼层
楼主
发表于 2016-8-3 11:00:57 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
1,实验材料:
ESPDUINO板1个,Arduino 2 Motor && 16 Servo Drive Shield 扩展板1个,电池盒及2节3.7V干电池,舵机1个;
2,硬件连接:
将扩展板对应插在ESPDUINO板上,装上2节电池的电池盒电源正负极分别接扩展板的vs和GND(右边两个接口),用一个短路块(跳线帽插在靠近扩展板电源的VIN和VS上面(4个管脚的中间两个)),舵机线对应插在扩展板的16路舵机管脚(黄色线为信号线,接PWM,红色线接VS,绿色线接GND);
3,实验原理:
通过扩展板上面集成的芯片输出PWM波控制舵机正反转,从而实现对舵机的控制;
4,例程源码:
  1. /***************************************************
  2.   示例:16伺服舵机。
  3.   效果:伺服向前转180度,然后向转180度....
  4.   by DOIT. http://www.doit.am
  5. ****************************************************/
  6. #include <Wire.h>
  7. #include <ServoDriver.h>

  8. ServoDriver pwm = ServoDriver();

  9. #define SERVOMIN  102 // 这是“最小”脉冲长度计数(满分4096)0度
  10. #define SERVOMAX  512 // 这是“最大的”脉冲长度计数(满分4096)180度

  11. // 重要提示:舵机号#
  12. uint8_t servonum = 0;

  13. void setup()
  14. {
  15.   pwm.begin();
  16.   pwm.setPWMFreq(50);  // 舵机在50Hz运行
  17. }

  18. void loop()
  19. {
  20.   // 在一个时间驱动一台舵机
  21.   for (uint16_t pulselen = SERVOMIN; pulselen < SERVOMAX; pulselen++)
  22.   {
  23.     pwm.setPWM(servonum, 0, pulselen);
  24.   }
  25.   delay(2000);
  26.   for (uint16_t pulselen = SERVOMAX; pulselen > SERVOMIN; pulselen--)
  27.   {
  28.     pwm.setPWM(servonum, 0, pulselen);
  29.   }
  30.   delay(2000);
  31. }
复制代码

5,实物连接及效果图:

1.jpg (93.76 KB, 下载次数: 1623)

1.jpg

2.jpg (101.7 KB, 下载次数: 1530)

2.jpg
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|四博智联 Inc. ( 粤ICP备15034758号-1

GMT+8, 2024-11-15 23:02 , Processed in 0.060128 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表