查看: 8694|回复: 16

[原创] 【FRDM_KL02Z】开发笔记+基于mbed开发环境+驱动舵机

[复制链接]
  • TA的每日心情
    开心
    2018-11-4 09:17
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    8

    主题

    34

    帖子

    0

    注册会员

    Rank: 2

    积分
    156
    最后登录
    2019-7-5
    发表于 2015-11-27 15:05:09 | 显示全部楼层 |阅读模式
    本帖最后由 yitai121 于 2015-11-27 15:09 编辑

    1、开发环境
    开发环境使用的是mbed离线开发包,Smeshstudio。这个是一个基于java开发环境eclipse的编译器也就是Mbed的离线版,同时SMeshStudio还支持arduino,contiki的开发,是一个多平台的编译器smeshlink官网地址http://mbed.smeshlink.com/。
    2、支持的开发板
    Mbed官网给出的支持的开发板并没有KL02z,但支持FRDM-KL05z,我对比了两块芯片,不同之处在于KL02z比KL05z少了DAC接口和Touch System Interface,其他引脚定义基本一样,因此本次就基于FRDM—kl05z建立了工程。


    支持的开发板

    支持的开发板


    3、PWM输出控制伺服舵机
    今天用到的是Kl02Z,有四个PWM输出的通道,分别是TPM0_CH0、TPM0_CH1、TPM1_CH0、TPM1_CH1,对应的引脚分别是PTA6、PTA5、PTA0、PTB13。例程给出的是使用TPM0_CH0输出PWM驱动舵机在全角度扫描转动。


    pwm通道

    pwm通道
                                             

    kl02z PWM通道

    kl02z PWM通道


    4、用到的舵机驱动专用库函数SERVO.h,这是smeshlink自带的,直接添加就好了。代码贴出来:
    1. /* mbed R/C Servo Library
    2. *  
    3. * Copyright (c) 2007-2010 sford, cstyles
    4. *
    5. * Permission is hereby granted, free of charge, to any person obtaining a copy
    6. * of this software and associated documentation files (the "Software"), to deal
    7. * in the Software without restriction, including without limitation the rights
    8. * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    9. * copies of the Software, and to permit persons to whom the Software is
    10. * furnished to do so, subject to the following conditions:
    11. *
    12. * The above copyright notice and this permission notice shall be included in
    13. * all copies or substantial portions of the Software.
    14. *
    15. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    16. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    17. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    18. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    19. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    20. * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    21. * THE SOFTWARE.
    22. */

    23. #include "Servo.h"
    24. #include "mbed.h"

    25. static float clamp(float value, float min, float max) {
    26.     if(value < min) {
    27.         return min;
    28.     } else if(value > max) {
    29.         return max;
    30.     } else {
    31.         return value;
    32.     }
    33. }

    34. Servo::Servo(PinName pin) : _pwm(pin) {
    35.     calibrate();
    36.     write(0.5);
    37. }

    38. void Servo::write(float percent) {
    39.     float offset = _range * 2.0 * (percent - 0.5);
    40.     _pwm.pulsewidth(0.0015 + clamp(offset, -_range, _range));
    41.     _p = clamp(percent, 0.0, 1.0);
    42. }

    43. void Servo::position(float degrees) {
    44.     float offset = _range * (degrees / _degrees);
    45.     _pwm.pulsewidth(0.0015 + clamp(offset, -_range, _range));
    46. }

    47. void Servo::calibrate(float range, float degrees) {
    48.     _range = range;
    49.     _degrees = degrees;
    50. }

    51. float Servo::read() {
    52.     return _p;
    53. }

    54. Servo& Servo::operator= (float percent) {
    55.     write(percent);
    56.     return *this;
    57. }

    58. Servo& Servo::operator= (Servo& rhs) {
    59.     write(rhs.read());
    60.     return *this;
    61. }

    62. Servo::operator float() {
    63.     return read();
    64. }
    复制代码
    6、最终代码如下:
    1. // Do not remove the include below
    2. #include "kl02z_servo.h"

    3. // Continuously sweep the servo through it's full range
    4. #include "mbed.h"
    5. #include "Servo.h"

    6. Servo myservo(PTA6);

    7.   int main()
    8.   {
    9.         myservo.calibrate(0.002,180);
    10.       while(1)
    11.       {
    12.           for(int i=-90; i<90; i++)
    13.           {
    14.               myservo.position(i);
    15.               wait(0.01);
    16.           }
    17.           wait(2);

    18.           for(int i=-90; i>0; i--)
    19.           {
    20.               myservo.position(i);
    21.               wait(0.01);
    22.           }
    23.           wait(2);
    24.       }
    25.   }
    复制代码

    评分

    参与人数 1NXP金币 +20 收起 理由
    小七 + 20 赞一个!

    查看全部评分

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16856
    最后登录
    1970-1-1
    发表于 2015-11-27 15:12:41 | 显示全部楼层
    多谢分享!
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-10 16:14
  • 签到天数: 1442 天

    连续签到: 1 天

    [LV.10]以坛为家III

    17

    主题

    3862

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    8291
    最后登录
    2021-12-10
    发表于 2015-11-27 15:17:35 | 显示全部楼层
    楼主很细心,观察到了 KL02Z 与 KL05Z 的不同而能够用 mbed 开发,顶一个。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8

    主题

    569

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2124
    最后登录
    2018-2-1
    发表于 2015-11-27 15:20:39 | 显示全部楼层
    多谢分享, FreeLogo.png
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-5-7 09:07
  • 签到天数: 353 天

    连续签到: 1 天

    [LV.8]以坛为家I

    141

    主题

    8056

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5786
    最后登录
    2025-5-7
    发表于 2015-11-27 15:56:22 | 显示全部楼层
    谢谢分享 085925amn4iwd444idmqwo.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    555

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    1343
    最后登录
    2018-10-23
    发表于 2015-11-27 16:21:11 | 显示全部楼层
    学习            
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2016-12-4 23:20
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    9

    主题

    573

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1785
    最后登录
    2017-3-3
    发表于 2015-11-27 21:43:54 | 显示全部楼层
    091541cr1iu0jkaf0zjmqc.png
    谢谢分享
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-1-6 07:38
  • 签到天数: 736 天

    连续签到: 1 天

    [LV.9]以坛为家II

    21

    主题

    3486

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    5093
    最后登录
    2024-1-7
    发表于 2015-11-28 09:14:51 | 显示全部楼层
    谢谢分享
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2017-5-3 11:19
  • 签到天数: 10 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    50

    主题

    1万

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    14090
    最后登录
    2024-4-19
    发表于 2015-11-28 09:46:25 | 显示全部楼层
    i love mbed. null.png null1.png null2.png null3.png null4.png null5.png null6.png null7.png null8.png null9.png
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 21:11
  • 签到天数: 2494 天

    连续签到: 26 天

    [LV.Master]伴坛终老

    17

    主题

    5499

    帖子

    5

    金牌会员

    Rank: 6Rank: 6

    积分
    11461
    最后登录
    2025-9-1
    发表于 2015-11-28 13:44:22 | 显示全部楼层
    谢谢分享...
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-2 17:06 , Processed in 0.109823 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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