兼容Arduino Zero的自制机器人控制板的舵机控制
兼容Arduino Zero的机器人控制板已打样完成,关于控制板的布局和接口定义可查阅:制作Arduino Zero机器人控制板 ,关于CORTEX_M0处理器刷Arduino Bootloader的过程可查阅:使用J-Link EDU Mini 为ATSAMD21G18烧写Bootloader ,本文重点测试控制板对舵机的控制
舵机控制原理
舵机控制相关知识前期已有相关文章做过大量的介绍,本文不再赘述,详情可查阅:
Arduino Zero

2014年5月16日,开源硬件平台提供商Arduino和全球微控制器(MCU)及触摸技术解决方案提供商Atmel公司(NASDAQ:ATML)日前联合发布最新款开发板——Arduino Zero。

Arduino Zero 采用Atmel SAMD21单片机作为控制核心,这是一个ARM Cortex m0核心的单片机;同时板载了EDBG调试接口,整体上看更像是采用了Arduino接口的Atmel开发板,因为目前主流的cortex开发板都搭载有类似的调试接口;而SAMD21这个mcu的主要配置为: 48MHZ, 256KB Flash 32KB SRAM
Arduino公司的联合创始人兼CEO Massimo Banzi表示:“Zero开发板的发布扩充了Arduino开发板系列,且同时具备更高的性能,有助于发挥创客群体的创造力。其灵活的功能集能够为各类设备带来无限的项目机遇,而且也是一个很好的教学工具,可用于学习如何开发32位应用程序。”
控制板的舵机控制

这款自制的机器人控制板支持4路舵机,其中舵机3和舵机4不能与步进电机3共同使用,因为它们共同使用了数字引脚D9 和D10。

自制机器人控制板的接口定义

兼容板的实际连线如下:

以D3为例Arduino Zero兼容板控制舵机的代码如下:
#include <Servo.h> //调用Servo.h库 Servo myservo; //创建舵机类,命名为myservo #define SERVO_PIN 3 //定义舵机控制引脚 unsigned int PWM = 0; //变量pwm用来存储舵机角度位置 //PWM的500对应0度,2500对应舵机的最大角度 //180度舵机,2500对应180度 //270度舵机2500对应270度 void singleServoControl(){ for(PWM = 50; PWM <2450; PWM += 5){ //舵机由50转到2450,每次增加5 myservo.writeMicroseconds(PWM); //写入PWM 信号 delay(10); //延时10ms转到指定位置 } for(PWM = 2450; PWM>50; PWM-=5){ myservo.writeMicroseconds(PWM); delay(10); } } void setup(){ myservo.attach(SERVO_PIN); // 将D3引脚与舵机对象连接起来 } void loop(){ singleServoControl(); }
从代码可以看出,自制的Arduino Zero兼容板与普通Arduino开发板代码并无多大差异,但有点可明显可以减少杜邦线的使用,兼容板可以简单的直接运用到实际项目中去。
专题:制作自平衡机器人:
- 使用J-Link EDU Mini 为ATSAMD21G18烧写Bootloader
- 制作Arduino Zero机器人控制板
- 兼容Arduino Zero的自制机器人控制板的舵机控制