1增加状态语音提示,2同时按两个建发送对喷,3修复飞机状态没有正常发送bug
This commit is contained in:
parent
988aea3c8e
commit
2ffb029774
86
src/main.cpp
86
src/main.cpp
@ -49,6 +49,7 @@ void ctbtn_pressend();
|
|||||||
void ctbtn_pressstart();
|
void ctbtn_pressstart();
|
||||||
|
|
||||||
void testbtn_click();
|
void testbtn_click();
|
||||||
|
void btn_presssatonce();
|
||||||
|
|
||||||
int get_pullweight();
|
int get_pullweight();
|
||||||
void Task1(void *pvParameters);
|
void Task1(void *pvParameters);
|
||||||
@ -56,9 +57,14 @@ void led_show(CRGB ledcolor);
|
|||||||
// void Task1code( void *pvParameters );
|
// void Task1code( void *pvParameters );
|
||||||
void showledidel();
|
void showledidel();
|
||||||
int pullweight = 0;
|
int pullweight = 0;
|
||||||
|
int8_t btn_pressatonce=0; //是否同时按下
|
||||||
unsigned long _tm_bengstop;
|
unsigned long _tm_bengstop;
|
||||||
bool _bengstop = false;
|
bool _bengstop = false;
|
||||||
bool _needweightalign = false;
|
bool _needweightalign = false;
|
||||||
|
|
||||||
|
bool curr_armed=false;
|
||||||
|
uint8_t curr_mode=0;
|
||||||
|
|
||||||
// 需要做的初始化工作
|
// 需要做的初始化工作
|
||||||
enum Initstatus
|
enum Initstatus
|
||||||
{
|
{
|
||||||
@ -116,7 +122,7 @@ boolean isPush = false; //记得删除 板子按钮状态 ps:D3引脚下拉微
|
|||||||
/*异步线程对象*/
|
/*异步线程对象*/
|
||||||
Ticker pubTicker(pubThread,1000); //定时发布主题 线程
|
Ticker pubTicker(pubThread,1000); //定时发布主题 线程
|
||||||
Ticker mavTicker(mavThread,10000); //定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后
|
Ticker mavTicker(mavThread,10000); //定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后
|
||||||
Ticker flashTicker(flashThread,50); //单片机主动 按钮主动发布主题 线程
|
//Ticker flashTicker(flashThread,50); //单片机主动 按钮主动发布主题 线程
|
||||||
/////////////////////////////////MQTT_语音_MAVLINK 部分结束
|
/////////////////////////////////MQTT_语音_MAVLINK 部分结束
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
@ -173,7 +179,9 @@ void setup()
|
|||||||
/////////////////////////////////MQTT_语音_MAVLINK 部分
|
/////////////////////////////////MQTT_语音_MAVLINK 部分
|
||||||
/*初始化*/
|
/*初始化*/
|
||||||
Serial1.begin(115200, SERIAL_8N1, SERIAL_REPORT_RX, SERIAL_REPORT_TX); //声音模块引串口脚映射
|
Serial1.begin(115200, SERIAL_8N1, SERIAL_REPORT_RX, SERIAL_REPORT_TX); //声音模块引串口脚映射
|
||||||
|
// fc.playText("正在连接服WIFI");
|
||||||
fc.connectWifi(); //连接wifi
|
fc.connectWifi(); //连接wifi
|
||||||
|
// fc.playText("正在连接服务器");
|
||||||
fc.connectMqtt(topicSub, topicSubCount); //连接mqtt
|
fc.connectMqtt(topicSub, topicSubCount); //连接mqtt
|
||||||
fc.mqttClient->setCallback(mqtt_receiveCallback); //设置订阅成功 回调
|
fc.mqttClient->setCallback(mqtt_receiveCallback); //设置订阅成功 回调
|
||||||
fc.mav_request_data(); //指定飞控串口返回的数据类别(飞控启动之后发送才有意义)
|
fc.mav_request_data(); //指定飞控串口返回的数据类别(飞控启动之后发送才有意义)
|
||||||
@ -181,7 +189,7 @@ void setup()
|
|||||||
/*异步线程*/
|
/*异步线程*/
|
||||||
pubTicker.start(); //定时 发布主题
|
pubTicker.start(); //定时 发布主题
|
||||||
mavTicker.start(); //定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后
|
mavTicker.start(); //定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后
|
||||||
flashTicker.start(); //监听 按flash键时 主动发布对频主题
|
//flashTicker.start(); //监听 按flash键时 主动发布对频主题
|
||||||
/////////////////////////////////MQTT_语音_MAVLINK 部分结束
|
/////////////////////////////////MQTT_语音_MAVLINK 部分结束
|
||||||
|
|
||||||
|
|
||||||
@ -192,7 +200,7 @@ void setup()
|
|||||||
// //slowup();
|
// //slowup();
|
||||||
|
|
||||||
// }
|
// }
|
||||||
|
fc.playText("启动完成");
|
||||||
Serial.println("PullupDevice is ready!");
|
Serial.println("PullupDevice is ready!");
|
||||||
}
|
}
|
||||||
void slowup()
|
void slowup()
|
||||||
@ -321,7 +329,11 @@ void checkinited()
|
|||||||
// 在核心1上执行,重要的延迟低的
|
// 在核心1上执行,重要的延迟低的
|
||||||
void loop()
|
void loop()
|
||||||
{
|
{
|
||||||
tksendinfo.update(); // 定时发送信息任务
|
// tksendinfo.update(); // 定时发送信息任务
|
||||||
|
pubTicker.update(); //定时 发布主题
|
||||||
|
mavTicker.update(); //定时 指定飞控mavlink 串口返回的数据类别 防止飞控启动滞后
|
||||||
|
|
||||||
|
|
||||||
sercomm.getcommand(); // 得到控制命令
|
sercomm.getcommand(); // 得到控制命令
|
||||||
button_checktop.tick(); // 按钮
|
button_checktop.tick(); // 按钮
|
||||||
button_down.tick(); // 按钮
|
button_down.tick(); // 按钮
|
||||||
@ -496,6 +508,16 @@ void downbtn_dbclick()
|
|||||||
void downbtn_pressstart()
|
void downbtn_pressstart()
|
||||||
{
|
{
|
||||||
Serial.println("downbtn_pressstart");
|
Serial.println("downbtn_pressstart");
|
||||||
|
//两个同时按用于对频
|
||||||
|
btn_pressatonce++;
|
||||||
|
if (btn_pressatonce>2) btn_pressatonce=2;
|
||||||
|
if (btn_pressatonce==2)
|
||||||
|
{
|
||||||
|
btn_presssatonce();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (motocontrol.getcontrolstatus().motostatus != MotoStatus::MS_Stop)
|
if (motocontrol.getcontrolstatus().motostatus != MotoStatus::MS_Stop)
|
||||||
{
|
{
|
||||||
motocontrol.stop();
|
motocontrol.stop();
|
||||||
@ -510,6 +532,9 @@ void downbtn_pressstart()
|
|||||||
void downbtn_pressend()
|
void downbtn_pressend()
|
||||||
{
|
{
|
||||||
Serial.println("downbtn_pressend");
|
Serial.println("downbtn_pressend");
|
||||||
|
btn_pressatonce--;
|
||||||
|
if (btn_pressatonce<0) btn_pressatonce=0;
|
||||||
|
|
||||||
motocontrol.stop();
|
motocontrol.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,10 +566,27 @@ void upbtn_dbclick()
|
|||||||
motocontrol.moto_run(MotoStatus::MS_Up);
|
motocontrol.moto_run(MotoStatus::MS_Up);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 两个按钮同时按下
|
||||||
|
void btn_presssatonce()
|
||||||
|
{
|
||||||
|
Serial.println("btn_presssatonce");
|
||||||
|
led_show(255,255, 255); // 高亮一下
|
||||||
|
fc.playText("发送对频信息");
|
||||||
|
fc.pubMQTTmsg(topicHandle[0], fc.getMacAdd());
|
||||||
|
}
|
||||||
// 收线按钮-长按
|
// 收线按钮-长按
|
||||||
void upbtn_pressstart()
|
void upbtn_pressstart()
|
||||||
{
|
{
|
||||||
Serial.println("upbtn_pressstart");
|
Serial.println("upbtn_pressstart");
|
||||||
|
//两个同时按用于对频
|
||||||
|
btn_pressatonce++;
|
||||||
|
if (btn_pressatonce>2) btn_pressatonce=2;
|
||||||
|
if (btn_pressatonce==2)
|
||||||
|
{
|
||||||
|
btn_presssatonce();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (motocontrol.getcontrolstatus().motostatus != MotoStatus::MS_Stop)
|
if (motocontrol.getcontrolstatus().motostatus != MotoStatus::MS_Stop)
|
||||||
{
|
{
|
||||||
motocontrol.stop();
|
motocontrol.stop();
|
||||||
@ -559,6 +601,9 @@ void upbtn_pressstart()
|
|||||||
void upbtn_pressend()
|
void upbtn_pressend()
|
||||||
{
|
{
|
||||||
Serial.println("upbtn_pressend");
|
Serial.println("upbtn_pressend");
|
||||||
|
btn_pressatonce--;
|
||||||
|
if (btn_pressatonce<0) btn_pressatonce=0;
|
||||||
|
|
||||||
motocontrol.stop();
|
motocontrol.stop();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -789,8 +834,14 @@ void mavlink_receiveCallback(mavlink_message_t* pMsg, mavlink_status_t* pStatus,
|
|||||||
topicPubMsg[0] = buf; //心跳主题
|
topicPubMsg[0] = buf; //心跳主题
|
||||||
//从心跳里判断 飞机是否解锁 解锁改变飞机状态
|
//从心跳里判断 飞机是否解锁 解锁改变飞机状态
|
||||||
if (heartbeat.base_mode & 128) { //从心跳里面 判断已经解锁
|
if (heartbeat.base_mode & 128) { //从心跳里面 判断已经解锁
|
||||||
|
if (!curr_armed)
|
||||||
|
fc.playText("已解锁");
|
||||||
|
curr_armed=true;
|
||||||
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 4, 1); //设置飞机状态为已解锁状态 1xxxx 第四位为1 代表已解锁
|
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 4, 1); //设置飞机状态为已解锁状态 1xxxx 第四位为1 代表已解锁
|
||||||
} else { //心跳里面 判断没有解锁
|
} else {
|
||||||
|
if (curr_armed)
|
||||||
|
fc.playText("已加锁");
|
||||||
|
curr_armed=false; //心跳里面 判断没有解锁
|
||||||
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 4, 0); //设置飞机状态为已解锁状态 0xxxx 第四位为0 代表未解锁
|
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 4, 0); //设置飞机状态为已解锁状态 0xxxx 第四位为0 代表未解锁
|
||||||
if ((uint8_t)topicPubMsg[10].toInt() & 4) { //如果已经写入了航点
|
if ((uint8_t)topicPubMsg[10].toInt() & 4) { //如果已经写入了航点
|
||||||
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 2, 1); //设置为航点写入成功状态
|
topicPubMsg[10] = fc.setNBit(topicPubMsg[10], 2, 1); //设置为航点写入成功状态
|
||||||
@ -799,53 +850,59 @@ void mavlink_receiveCallback(mavlink_message_t* pMsg, mavlink_status_t* pStatus,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//从心跳里面 判断飞机当前的模式
|
//从心跳里面 判断飞机当前的模式
|
||||||
|
if (curr_mode!=heartbeat.custom_mode)
|
||||||
|
{
|
||||||
|
curr_mode=heartbeat.custom_mode;
|
||||||
|
|
||||||
switch (heartbeat.custom_mode) {
|
switch (heartbeat.custom_mode) {
|
||||||
case 0:
|
case 0:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "Stabilize自稳";
|
topicPubMsg[12] = "姿态模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "AltHold定高";
|
topicPubMsg[12] = "定高模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "Auto自动";
|
topicPubMsg[12] = "自动模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "Guided引导";
|
topicPubMsg[12] = "引导模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "Loiter留待";
|
topicPubMsg[12] = "悬停模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "RTL返航";
|
topicPubMsg[12] = "返航模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 9:
|
case 9:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "Land降落";
|
topicPubMsg[12] = "降落模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 16:
|
case 16:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "PosHold定点";
|
topicPubMsg[12] = "定点模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
topicPubMsg[12] = "Unknown未知";
|
topicPubMsg[12] = "未知模式";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
fc.playText(topicPubMsg[12]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -1022,6 +1079,7 @@ void pubThread() {
|
|||||||
}
|
}
|
||||||
//发送心跳包
|
//发送心跳包
|
||||||
fc.pubMQTTmsg(topicPub[0], topicPubMsg[0]);
|
fc.pubMQTTmsg(topicPub[0], topicPubMsg[0]);
|
||||||
|
// printf("pub%s:%s\n",topicPub[0],topicPubMsg[0]);
|
||||||
} else { //非心跳包 有更新才向对应主题发布信息
|
} else { //非心跳包 有更新才向对应主题发布信息
|
||||||
fc.pubMQTTmsg(topicPub[i], topicPubMsg[i]);
|
fc.pubMQTTmsg(topicPub[i], topicPubMsg[i]);
|
||||||
oldMsg[i] = topicPubMsg[i];
|
oldMsg[i] = topicPubMsg[i];
|
||||||
|
Loading…
Reference in New Issue
Block a user