玩转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库的 ...
随机推荐
- 安卓开发 UI入门
布局的类型 线性布局 LinearLayout *** 垂直显示 vertical 水平显示 horizontal 文本适应 wrap_content 填充父窗体 match_parent 权重 l ...
- [BZOJ1060][ZJOI2007]时态同步 树形dp
Description 小Q在电子工艺实习课上学习焊接电路板.一块电路板由若干个元件组成,我们不妨称之为节点,并将其用数 字1,2,3….进行标号.电路板的各个节点由若干不相交的导线相连接,且对于电路 ...
- 从零开始的四轴飞行器-开篇flag
在这里立下flag,我要理解学会四轴飞行器的控制方法.
- booststrap select2的应用总结
本身对前端js了解不是特别多,在项目中,遇到很多前端的问题,有时间整理一下,有不对的地方,不吝赐教,多多批评指正. 在项目中,遇到最多的select下拉框情景,莫过于多选和单选了 单选是很容易理解的, ...
- H5本地存储一
localStorage(本地存储),可以长期存储数据,没有时间限制,一天,一年,两年甚至更长,数据都可以使用.sessionStorage(会话存储),只有在浏览器被关闭之前使用,创建另一个页面时同 ...
- Jmeter 4.0 对返回Json处理
研究这个的目的是:如果返回信息是比较复杂的,需要对返回信息中数据以及数据的层级做断言 我找了一些我们的接口,层级关系都太简单了,最复杂的就是这两个了:[而且都是get接口,原来get接口还要增加测试点 ...
- DB中字段为null,为空,为空字符串,为空格要怎么过滤取出有效值
比如要求取出微信绑定的,没有解绑的 未绑定,指定字段为null 绑定的,指定字段为某个字符串 解绑的,有的客户用的是更新指定字段为1,有的客户更新指定字段为‘1’ 脏数据的存在,比如该字段为空字符 ...
- js实现滑动拼图验证码
js实现滑动拼图验证码,我这个样式是仿那些大网站做了, 学习用的,只用到前端. 小的个人网站感觉还可以用,大一点的别人用机器一下就破解了. 下面看图示: 样子大概是这样的. 源码在这 百度网盘: ...
- c++ primer plus 第二章 课后题答案
#include<iostream> using namespace std; int main() { cout << "My name is Jiantong C ...
- Use a layout_width of 0dip instead of fill_parent for better performance
安装了最新的ATD 18之后,新加的Lint Warnings插件会给我们检测出许多xml布局中不当的地方,例如: Use a layout_width of 0dip instead of fill ...