蓝牙遥控器采用 BLE 技术连接 Tbot-I 主控,可以方便的遥控雷霆,大大提升了雷霆的可玩性和竞技性。
Tbot I 功能库提供了方便应用的API,获取按键的事件和数据。在用户程序中,主控的蓝牙遥控默认是打开,用户编程时可以通过 Turnon_Remote
打开/关闭蓝牙遥控服务。
使用 Check_Key
获取按键状态,Check_Key_Action
检测按键动作,可以获取按键事件的按键标识为KEY_UP
, KEY_DOWN
, KEY_LEFT
, KEY_RIGHT
, KEY_SELECT
, KEY_BACK
, KEY_A
, KEY_B
, KEY_X
, KEY_Y
, KEY_L1
, KEY_L2
, KEY_R1
, KEY_R2
, KEY_ROCKER_L
, KEY_ROCKER_R
;
使用 Get_Control_Value
获得摇杆的模拟数值(按键数据),可以获取按键数据的按键标识为 KEY_ROCKER_L_X
, KEY_ROCKER_L_Y
, KEY_ROCKER_R_X
, KEY_ROCKER_R_Y
, KEY_L2_ANALOG
, KEY_R2_ANALOG
。
常用的 API:
/**
* @brief 打开/关闭蓝牙遥控器功能,默认是打开蓝牙遥控器功能的,但是蓝牙遥控器功能会占用
* 系统资源,如果不需要蓝牙遥控器功能,可以使用此函数关闭
*
* @param enable: true打开蓝牙遥控器功能, false关闭蓝牙遥控器功能
*/
void SENSOR_REMOTER::Turnon_Remote(bool enable)
/**
* @brief 判断按键状态
*
* @param key_index 按键标识,参照枚举变量 enum_Remoter_Key
* @return true 按键状态为按下
* @return false 按键状态为释放
*/
bool SENSOR_REMOTER::Check_Key(int key_index)
/**
* @brief 检测是否发生了按下动作(每次按下只能读到一次true)或释放动作(每次释放只能读到一次true)
*
* @param key_index 按键标识,参照枚举变量 enum_Remoter_Key
* @param key_action 检测的动作,0为释放按键,1为按下按键
* @return true 检测的动作有发生
* @return false 检测的动作没有发生
*/
bool SENSOR_REMOTER::Check_Key_Action(int key_index, int key_action)
/**
* @brief 获取摇杆或按键的数值
*
* @param key_index 摇杆、按键标识,参照枚举变量 enum_Remoter_Value
* @return int 摇杆、按键的模拟数值
*/
int SENSOR_REMOTER::Get_Control_Value(int key_index)
Tbot I 系统编程示范
if (BLE_Remoter.Check_Key_Action(KEY_Y, KEY_PRESSING))
{
Speaker_Thunder.Set_Sound_Volume(100);
Speaker_Thunder.Play_Song(SPEAKER_THUNDER::SOUND_MUSIC_C5);
}
Motor_Thunder.Set_Target(1, (BLE_Remoter.Get_Control_Value(KEY_ROCKER_L_Y) + BLE_Remoter.Get_Control_Value(KEY_ROCKER_L_X)) * 0.4);
Motor_Thunder.Set_Target(2, (BLE_Remoter.Get_Control_Value(KEY_ROCKER_L_Y) - BLE_Remoter.Get_Control_Value(KEY_ROCKER_L_X)) * 0.4);
示例程序: BleRemoter.ino