玩转X-CTR100 l STM32F4 l PS2无线手柄-4WD智能小车

我造轮子,你造车,创客一起造起来!更多塔克创新资讯【塔克社区 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智能小车的更多相关文章
- 玩转X-CTR100 l STM32F4 l PS2无线手柄
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] SONY的PS2无线手柄是索尼游戏机的遥控手柄,控制 ...
- 玩转X-CTR100 l 平台-4WD智能小车
我造轮子,你造车,创客一起造起来!更多塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍使用X-CTR100控制器搭建4WD智能 ...
- 玩转X-CTR100 l STM32F4 l ADC 模拟数字转换
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 AD转换接 ...
- 玩转X-CTR100 l STM32F4 l MPU6050加速度陀螺仪传感器
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 板载加速度 ...
- 玩转X-CTR100 l STM32F4 l X-CTR100与树莓派搭建机器人平台
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器与树莓派Linux系统 ...
- 玩转X-CTR100 l STM32F4 l 舵机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器的舵机控制,X-CTR ...
- 玩转X-CTR100 l STM32F4 l DRV8825 A4988 步进电机控制
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器控制步进电机 ...
- 玩转X-CTR100 l STM32F4 l 基础例程printf、LED、蜂鸣器、拨码开关、位带操作
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器基础板载资源 ...
- 玩转X-CTR100 l STM32F4 l DSP指令集性能测试
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] 本文介绍X-CTR100控制器 DSP库的 ...
随机推荐
- Educational Codeforces Round 57 (Rated for Div. 2)
我好菜啊. A - Find Divisible 好像没什么可说的. #include<cstdio> #include<cstring> #include<algori ...
- ajax中的contentType使用
本文为博主原创,未经允许不得转载: 最近在修改部分项目功能的时候,遇到一个问题.局部刷新某页面的功能是由ajax实现的,但当我进行局部刷新的时候,页面并没有刷新和响应, 在后台的代码中打了断点也并没有 ...
- 关于xargs cp中,如何确定拷贝的源和目的 (copied)
Seker: find . -name "*" |xargs cp ???? 这里 xargs cp 怎么区分cp源 和 cp目的 例如:想把 查询到的文件 都copy到/home ...
- Spring 注解 @Resource和@Autowired
@Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spr ...
- 《剑指offer》第四十题(最小的k个数)
// 面试题40:最小的k个数 // 题目:输入n个整数,找出其中最小的k个数.例如输入4.5.1.6.2.7.3.8 // 这8个数字,则最小的4个数字是1.2.3.4. #include < ...
- 《剑指offer》第二十三题(链表中环的入口结点)
// 面试题23:链表中环的入口结点 // 题目:一个链表中包含环,如何找出环的入口结点?例如,在图3.8的链表中, // 环的入口结点是结点3. #include <iostream> ...
- fragment 小结
1:注意事项 3.0以前的Android 版本要使用FragmentActivity 来装载Fragment ,使用到support v4包. 3.0以后的版本可以直接在Activity里面添 ...
- 雷林鹏分享:Ruby 注释
Ruby 注释 注释是在运行时会被忽略的 Ruby 代码内的注释行.单行注释以 # 字符开始,直到该行结束,如下所示: #!/usr/bin/ruby -w # 这是一个单行注释. puts &quo ...
- 『科学计算』可视化二元正态分布&3D科学可视化实战
二元正态分布可视化本体 由于近来一直再看kaggle的入门书(sklearn入门手册的感觉233),感觉对机器学习的理解加深了不少(实际上就只是调包能力加强了),联想到假期在python科学计算上也算 ...
- C/C++中的实参和形参,重点以及盲点,自己以前未知的
C/C++中的实参和形参 今天突然看到一道关于形参和实参的题,我居然不求甚解.藐视过去在我的脑海里只有一个参数的概念,对于形参和实参的区别还真的不知道,作为学习了几年C++的人来说,真的深深感觉对 ...