我造轮子,你造车,创客一起造起来!更多塔克创新资讯【塔克社区 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

前面已介绍X-CTR100控制器解码PS2无线手柄,本文继续前文,使用PS2无线手柄,实现4WD智能小车的控制,实现两种控制模式,方向模式和坦克模式。

例程-PS2无线手柄-4WD智能小车(方向模式)

使用4个方向按键,实现智能小车前进、后退、原地左转、原地右转四个运动操作。

硬件说明

硬件资源:

  • 串口UART1
  • LC扩展接口(非串口,作为普通IO口使用)
  • RO、RP接口,控制电机
  • X-CTR100-MDX2电机驱动模块或自备其它直流电机驱动模块(自备)
  • PS2无线手柄(需自备)

PS2手柄连接关系如下,

DATA——LC接口-D6

COMM——LC接口-D5

GND——LC接口-GND

VCC——LC接口-3.3V

ATT——LC接口-D7

CLOCK——LC接口-D4

ACK——LC接口-D3

特别说明,注意左右电机连接顺序和电机正反连接顺序,如果不能按照预期动作,请自行调整,或修改程序代码。

软件说明

主程序代码如下。

int main(void)

{    

    //X-CTR100初始化

    AX_Init(115200);

    printf("***X-CTR100 PS2无线手柄例程***\r\n\r\n");    

    
 

//功能配置

    AX_MOTOR_TIM1_MNOP_Init(20); //初始化电机控制端口,PWM频率为20KHz        

    AX_PS2_Init();    //PS2初始化

AX_Delayms(10);

 

    while (1)

    {

        AX_PS2_ScanKey(&my_joystick);

        

        //LR按键控制方式(塔克模式)

        if((my_joystick.btn1|0xEF) == 0xEF) //前

        {

            AX_MOTOR_TIM1_O_SetSpeed(60);

            AX_MOTOR_TIM1_P_SetSpeed(60);

        }

        else if((my_joystick.btn1|0xBF) == 0xBF) //后

        {

            AX_MOTOR_TIM1_O_SetSpeed(-60);

            AX_MOTOR_TIM1_P_SetSpeed(-60);

        }

        else if((my_joystick.btn1|0xDF) == 0xDF) //右

        {

            AX_MOTOR_TIM1_O_SetSpeed(-60);

            AX_MOTOR_TIM1_P_SetSpeed(60);

        }

        else if((my_joystick.btn1|0x7F) == 0x7F) //左

        {

            AX_MOTOR_TIM1_O_SetSpeed(60);

            AX_MOTOR_TIM1_P_SetSpeed(-60);             

        }

        else //停止

        {

            AX_MOTOR_TIM1_O_SetSpeed(0);

            AX_MOTOR_TIM1_P_SetSpeed(0);     

        }

        

        printf("MODE:%2x BTN1:%2x BTN2:%2x RJOY_LR:%2x RJOY_UD:%2x LJOY_LR:%2x LJOY_UD:%2x\r\n",

        my_joystick.mode, my_joystick.btn1, my_joystick.btn2,

        my_joystick.RJoy_LR, my_joystick.RJoy_UD, my_joystick.LJoy_LR, my_joystick.LJoy_UD);    

 

        AX_Delayms(30);        

    }

}

转速可根据自己的4WD转速调试,支持-200~200转速,负为倒转,0为停止。

例程-PS2无线手柄-4WD智能小车(坦克模式)

像坦克车一样使用左右摇杆控制小车,左摇杆控制左轮前进后退,可调速,右摇杆控制右轮。

硬件说明

硬件资源:

  • 串口UART1
  • LC扩展接口(非串口,作为普通IO口使用)
  • RO、RP接口,控制电机
  • X-CTR100-MDX2电机驱动模块或自备其它直流电机驱动模块(自备)
  • PS2无线手柄(需自备)

PS2手柄连接关系如下,

DATA——LC接口-D6

COMM——LC接口-D5

GND——LC接口-GND

VCC——LC接口-3.3V

ATT——LC接口-D7

CLOCK——LC接口-D4

ACK——LC接口-D3

特别说明,注意左右电机连接顺序和电机正反连接顺序,如果不能按照预期动作,请自行调整,或修改程序代码。

软件说明

主程序代码如下。

int main(void)

{    

    //X-CTR100初始化

    AX_Init(115200);

    printf("***X-CTR100 PS2无线手柄例程***\r\n\r\n");    

    
 

//功能配置

    AX_MOTOR_TIM1_MNOP_Init(20); //初始化电机控制端口,PWM频率为20KHz        

    AX_PS2_Init();    //PS2初始化

    AX_Delayms(1);    

 

    while (1)

    {

        AX_PS2_ScanKey(&my_joystick);

        

        //双摇杆控制方式(塔克模式)

        //左摇杆控制左轮前进后退,右摇杆控制右轮

AX_MOTOR_TIM1_O_SetSpeed((0x7F-my_joystick.RJoy_UD)/2);

        AX_MOTOR_TIM1_P_SetSpeed((0x7F-my_joystick.LJoy_UD)/2);

        

        //打印手柄键值

        printf("MODE:%2x BTN1:%2x BTN2:%2x RJOY_LR:%2x RJOY_UD:%2x LJOY_LR:%2x LJOY_UD:%2x\r\n",

        my_joystick.mode, my_joystick.btn1, my_joystick.btn2,

        my_joystick.RJoy_LR, my_joystick.RJoy_UD, my_joystick.LJoy_LR, my_joystick.LJoy_UD);    

 

        AX_Delayms(30);        

    }

}

玩转X-CTR100 l STM32F4 l PS2无线手柄-4WD智能小车的更多相关文章

  1. 玩转X-CTR100 l STM32F4 l PS2无线手柄

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...

  2. 玩转X-CTR100 l 平台-4WD智能小车

    我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍使用X-CTR100控制器搭建4WD智能 ...

  3. 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 AD转换接 ...

  4. 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 板载加速度 ...

  5. 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...

  6. 玩转X-CTR100 l STM32F4 l 舵机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...

  7. 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器控制步进电机 ...

  8. 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器基础板载资源 ...

  9. 玩转X-CTR100 l STM32F4 l DSP指令集性能测试

    我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ]      本文介绍X-CTR100控制器 DSP库的 ...

随机推荐

  1. Educational Codeforces Round 57 (Rated for Div. 2)

    我好菜啊. A - Find Divisible 好像没什么可说的. #include<cstdio> #include<cstring> #include<algori ...

  2. ajax中的contentType使用

    本文为博主原创,未经允许不得转载: 最近在修改部分项目功能的时候,遇到一个问题.局部刷新某页面的功能是由ajax实现的,但当我进行局部刷新的时候,页面并没有刷新和响应, 在后台的代码中打了断点也并没有 ...

  3. 关于xargs cp中,如何确定拷贝的源和目的 (copied)

    Seker: find . -name "*" |xargs cp ???? 这里 xargs cp 怎么区分cp源 和 cp目的 例如:想把 查询到的文件 都copy到/home ...

  4. Spring 注解 @Resource和@Autowired

    @Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spr ...

  5. 《剑指offer》第四十题(最小的k个数)

    // 面试题40:最小的k个数 // 题目:输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8 // 这8个数字,则最小的4个数字是1.2.3.4. #include < ...

  6. 《剑指offer》第二十三题(链表中环的入口结点)

    // 面试题23:链表中环的入口结点 // 题目:一个链表中包含环,如何找出环的入口结点?例如,在图3.8的链表中, // 环的入口结点是结点3. #include <iostream> ...

  7. fragment 小结

    1:注意事项   3.0以前的Android 版本要使用FragmentActivity 来装载Fragment ,使用到support v4包.   3.0以后的版本可以直接在Activity里面添 ...

  8. 雷林鹏分享:Ruby 注释

    Ruby 注释 注释是在运行时会被忽略的 Ruby 代码内的注释行.单行注释以 # 字符开始,直到该行结束,如下所示: #!/usr/bin/ruby -w # 这是一个单行注释. puts &quo ...

  9. 『科学计算』可视化二元正态分布&3D科学可视化实战

    二元正态分布可视化本体 由于近来一直再看kaggle的入门书(sklearn入门手册的感觉233),感觉对机器学习的理解加深了不少(实际上就只是调包能力加强了),联想到假期在python科学计算上也算 ...

  10. C/C++中的实参和形参,重点以及盲点,自己以前未知的

    C/C++中的实参和形参   今天突然看到一道关于形参和实参的题,我居然不求甚解.藐视过去在我的脑海里只有一个参数的概念,对于形参和实参的区别还真的不知道,作为学习了几年C++的人来说,真的深深感觉对 ...