|
|
第102行: |
第102行: |
| | | |
| ====Joypad搭建==== | | ====Joypad搭建==== |
− | *'''Step 1''':将Microduino-TFT从Microduino-Joypad面板后面卡进Microduino-Joypad面板上,用尼龙螺丝固定,注意Microduino-TFT安装方向 | + | *搭建过程可参考以下页面:[[[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh Joypad使用指南]]] |
− | [[File:Joypadstep1.jpg|center|600px]] | + | *当我们使用[[Microduino-Module nRF/zh]]作为通讯模块时,Joypad对应选择nRF模式即可:[[[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#.E9.80.9A.E8.AE.AF.E6.A8.A1.E5.BC.8F 通讯模式配置]]] |
− | *'''Step 2''':将传感器接线插在Microduino-TFT的接口上 | + | *特别要注意的是电池使用说明:[[[https://www.microduino.cn/wiki/index.php/Microduino-Joypad_Getting_start/zh#Step-2_.E7.94.B5.E6.B1.A0.E9.80.9A.E7.94.B5 电池使用说明]]] |
− | [[File:Joypadstep2.jpg|center|600px]] | |
− | '''注意:接不同的电池需要拨动中间的开关,在图中已有标志。需要先拨开关再接入电池,否则会影响使用。'''
| |
− | [[File:Joypadstep1_1.jpg|center|800px]] | |
− | *'''Step 3''':首先分别将两个摇杆按键、电池、四个白色按键放入对应位置,之后将连接好天线的nRF模块和Core装到Joypad底板上 | |
− | [[File:Joypadstep3.jpg|center|600px]] | |
− | *'''Step 4''':将Microduino-TFT传感器接线的另一头接到底板上的相应位置,之后将长版螺丝帽放到四个角的相应位置
| |
− | [[File:Joypadstep4.jpg|center|600px]]
| |
− | *'''Step 5''':将Joypad的表壳和底板使用螺丝和螺丝帽固定好
| |
− | [[File:Joypadstep5.jpg|center|600px]]
| |
− | *'''Step 6''':组装完成后将天线上的贴纸撕下,将天线贴在底板背面的任意位置,至此Joypad组装完毕
| |
− | [[File:Joypadstep6.jpg|center|600px]]
| |
| | | |
− | ====Joypad搭建调试====
| |
− | *按键对应
| |
− | 在打开Joypad之后的4秒左右时间之内按下Key1(下方最左侧的按键),会进入设置(Config)模式
| |
− | [[File:Step1进入设置.jpg|600px|center|]]
| |
− | *进入设置模式
| |
− | 按照图中的颜色,从左至右对应为Key1~Key4
| |
− | [[File:Step1按键对应.jpg|600px|center|]]
| |
− | 注意:必须在进入操作界面前进入(4S左右时间)。若未进入则重启进入'''
| |
− | *摇杆校准
| |
− | 按动Key3和Key4使光标上下移动,Key1为返回,Key2为确认
| |
− | 选择第一项Joystick Config进入摇杆设置模式
| |
− | 继续选择Joystick Correct进入摇杆校准模式。
| |
− | 进入之后会显示如图中第三张图所示的界面,初始状态为两个十字
| |
− | 此时摇动左右摇杆至最上,最下,最左,最右四个极限状态
| |
− | (推荐操作方式:将摇杆摇动一圈)
| |
− | 摇动之后会看到十字的四个方向出现圆圈,圆圈扩大到最大状态证明已经是摇杆的极限位置
| |
− | 校准之后按Key2确认并返回上一页面
| |
− | [[File:Step2摇杆校准.jpg|600px|center|]]
| |
− | *选择控制模式
| |
− | 按Key1回到主界面,选择第二项Protocol Config进入模式选择
| |
− | 选择第一项Mode,之后选择nRF24即robot控制模式,按下Key2确认并返回
| |
− | [[File:Step3设置Robot模式.jpg|600px|center|]]
| |
− | *设置通信信道
| |
− | 返回二级菜单,选择nRF24 Channel按下Key2确认
| |
− | 选择70,它是与Robot_Microduino.ino中nRF24的配置函数设置相对应的
| |
− | [[File:Step4通信通道设置robot.jpg|600px|center|]]
| |
− | 至此,Cube小车和遥控器已经组装完成
| |
− |
| |
− | ==注意问题==
| |
− | *下载程序时候最好只叠加core(core+)和USBTTL,虽然本次搭建涉及的nRF24不会引起冲突,但是别的通信模块有时会造成串口冲突,养成好习惯。
| |
− | *锂电池正负极别接错了,否则会烧坏电路。
| |
− | *调试好后,实际运行时不要使用USB供电,电压不足,请使用电池。
| |
− | ==程序说明==
| |
− |
| |
− | *Joypad部分
| |
− | def.h中
| |
− | 定义了
| |
− | <source lang = "cpp">
| |
− | uint8_t nrf_channal = 70; //0~125
| |
− | </source>
| |
− | nrf_channal为nrf通信的通道,joypad和Cube小车的代码中都会有该定义
| |
− | 当通道一致时则Joypad可与Cube小车成功连接。
| |
− | 在小车代码中会有如下程序段
| |
− | <source lang = "cpp">
| |
− | //nRF==============================
| |
− | SPI.begin(); //初始化SPI总线
| |
− | radio.begin();
| |
− | network.begin(/*channel*/ 70 , /*node address*/ this_node);
| |
− | </source>
| |
− | 在data.h中
| |
− | <source lang = "cpp">
| |
− | outBuf[0] = Joy1_x;
| |
− | outBuf[1] = Joy1_y;
| |
− | outBuf[2] = Joy_x;
| |
− | outBuf[3] = Joy_y;
| |
− | outBuf[4] = map(AUX[0], 0, 1, Joy_MID - Joy_maximum, Joy_MID + Joy_maximum);
| |
− | outBuf[5] = map(AUX[1], 0, 1, Joy_MID - Joy_maximum, Joy_MID + Joy_maximum);
| |
− | outBuf[6] = map(AUX[2], 0, 1, Joy_MID - Joy_maximum, Joy_MID + Joy_maximum);
| |
− | outBuf[7] = map(AUX[3], 0, 1, Joy_MID - Joy_maximum, Joy_MID + Joy_maximum);
| |
− | </source>
| |
− | 8位数组outBuf表示Joypad发出的8位数据,0位为右摇杆左右,1为右摇杆上下,2为左摇杆左右,3位左摇杆上下,4~7位对应AUX0~4
| |
− |
| |
− | 在nrf.h中
| |
− | <source lang = "cpp">
| |
− | struct send_a //发送
| |
− | {
| |
− | uint32_t ms;
| |
− | uint16_t rf_CH0;
| |
− | uint16_t rf_CH1;
| |
− | uint16_t rf_CH2;
| |
− | uint16_t rf_CH3;
| |
− | uint16_t rf_CH4;
| |
− | uint16_t rf_CH5;
| |
− | uint16_t rf_CH6;
| |
− | uint16_t rf_CH7;
| |
− | };
| |
− | </source>
| |
− | 此处定义的send_a结构体为对应的9位要发送的数据
| |
− |
| |
− | *小车部分
| |
− | 这四个定义为控制减速电机左轮前进后退与右轮前进后退
| |
− | <source lang = "cpp">
| |
− | #define motor_pin0A 5 //PWM left
| |
− | #define motor_pin0B 7
| |
− | #define motor_pin1A 6 //PWM
| |
− | #define motor_pin1B 8
| |
− | </source>
| |
− | 此处的receive_a对应Joypad程序中的send_a
| |
− | <source lang = "cpp">
| |
− | struct receive_a //接收
| |
− | {
| |
− | uint32_t ms;
| |
− | uint16_t rf_CH0;
| |
− | uint16_t rf_CH1;
| |
− | uint16_t rf_CH2;
| |
− | uint16_t rf_CH3;
| |
− | uint16_t rf_CH4;
| |
− | uint16_t rf_CH5;
| |
− | uint16_t rf_CH6;
| |
− | uint16_t rf_CH7;
| |
− | };
| |
− | </source>
| |
| 选择CH3为左摇杆控制前后,CH0位右摇杆控制左右 | | 选择CH3为左摇杆控制前后,CH0位右摇杆控制左右 |
| <source lang = "cpp"> | | <source lang = "cpp"> |