#include "User_Task.h"
#include "Drv_RcIn.h"
#include "LX_FC_Fun.h"
#include "ANO_DT_LX.h"
void UserTask_OneKeyCmd(void)
{
//////////////////////////////////////////////////////////////////////
// ?????
//////////////////////////////////////////////////////////////////////
static u8 one_key_takeoff_f = 1, one_key_land_f = 1, one_key_mission_f = 0;
static u8 mission_step = 0; // ????
// ?? RC ??
if (rc_in.no_signal == 0)
{
// ??? RC ?? 6 ??????????
if (rc_in.rc_ch.st_data.ch_[ch_6_aux2] > 1700 && rc_in.rc_ch.st_data.ch_[ch_6_aux2] < 2200)
{
if (one_key_mission_f == 0)
{
one_key_mission_f = 1; // ????
mission_step = 1; // ??????
}
}
else
{
one_key_mission_f = 0; // ??????
}
// ??????
if (one_key_mission_f == 1)
{
static u16 time_dly_cnt_ms = 0; // ?????
switch (mission_step)
{
case 0:
{
// ?????,????
time_dly_cnt_ms = 0;
mission_step += 1; // ???????
}
break;
case 1:
{
// ????
if (LX_Change_Mode(3)) {
mission_step += 1; // ??????
}
}
break;
case 2:
{
// ????
if (FC_Unlock()) {
mission_step += 1; // ??????
}
}
break;
case 3:
{
// ?? 2 ????????
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1; // ???????
}
}
break;
case 4:
{
// ??? 100 cm
if (OneKey_Takeoff(150) == 1) {
mission_step += 1; // ??????
}
}
break;
case 5:
{
// ????? 4 ?
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 6:
mission_step += Horizontal_Move(75,18,270); // Move horizontally
break;
case 7:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 8:
{
// ??? 0 cm
if (Descend_to_Altitude(110,27) == 1) {
mission_step += 1; // ??????
}
}
break;
case 9:
{
// ?? 2 ???????
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 10:
mission_step += Horizontal_Move(50,18,270); // Move horizontally
break;
case 11:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 12:
{
// ??? 100 cm
if (Ascend_to_Altitude(150,25) == 1) {
mission_step += 1; // ??????
}
}
break;
case 13:
{
// ????? 4 ?
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 14:
mission_step += Horizontal_Move(50,18,270); // Move horizontally
break;
case 15:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 16:
{
// ??? 0 cm
if (Descend_to_Altitude(110,27) == 1) {
mission_step += 1; // ??????
}
}
break;
case 17:
{
// ?? 2 ???????
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 18:
mission_step += Horizontal_Move(50,18,270); // Move horizontally
break;
case 19:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 20:
mission_step += Horizontal_Move(90,23,0); // Move horizontally
break;
case 21:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 22: // ???????case???11
mission_step += Rotate_Left(180, 45); // ??180?,??30?/?
break;
case 23:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 24:
mission_step += Horizontal_Move(50,18,270); // Move horizontally
break;
case 25:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 26:
{
// ??? 100 cm
if (Ascend_to_Altitude(150,25) == 1) {
mission_step += 1; // ??????
}
}
break;
case 27:
{
// ????? 4 ?
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 28:
mission_step += Horizontal_Move(50,18,270); // Move horizontally
break;
case 29:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 30:
{
// ?? 2 ???????
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 31:
{
// ??? 0 cm
if (Descend_to_Altitude(110,27) == 1) {
mission_step += 1; // ??????
}
}
break;
case 32:
mission_step += Horizontal_Move(50,18,270); // Move horizontally
break;
case 33:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 34:
{
// ??? 100 cm
if (Ascend_to_Altitude(150,25) == 1) {
mission_step += 1; // ??????
}
}
break;
case 35:
{
// ????? 4 ?
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 36: // ???????case???11
mission_step += Rotate_Left(225,45); // ??180?,??30?/?
break;
case 37:
{
// ????? 4 ?
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 38:
mission_step += Horizontal_Move(100,25,0); // Move horizontally
break;
case 39:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 40: // ???????case???11
mission_step += Rotate_Right(45,25); // ??180?,??30?/?
break;
case 41:
{
// ????? 4 ?
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 42:
{
// ??? 0 cm
if (Descend_to_Altitude(110,27) == 1) {
mission_step += 1; // ??????
}
}
break;
case 43:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 44:
mission_step += Horizontal_Move(50,18,90); // Move horizontally
break;
case 45:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 46:
{
// ??? 100 cm
if (Ascend_to_Altitude(150,25) == 1) {
mission_step += 1; // ??????
}
}
break;
case 47:
{
// ????? 4 ?
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 48:
mission_step += Horizontal_Move(50,18,90); // Move horizontally
break;
case 49:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 50:
{
// ??? 0 cm
if (Descend_to_Altitude(110,27) == 1) {
mission_step += 1; // ??????
}
}
break;
case 51:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 52:
mission_step += Horizontal_Move(50,18,90); // Move horizontally
break;
case 53:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 54:
mission_step += Horizontal_Move(50,18,0); // Move horizontally
break;
case 55:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 56: // ???????case???11
mission_step += Rotate_Left(180, 45); // ??180?,??30?/?
break;
case 57:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 58:
mission_step += Horizontal_Move(50,18,90); // Move horizontally
break;
case 59:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 60:
{
// ??? 100 cm
if (Ascend_to_Altitude(150,25) == 1) {
mission_step += 1; // ??????
}
}
break;
case 61:
{
// ????? 4 ?
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20; // ???? 20 ms
}
else
{
time_dly_cnt_ms = 0; // ?????
mission_step += 1; // ??????
}
}
break;
case 62:
mission_step += Horizontal_Move(50,18,90); // Move horizontally
break;
case 63:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 64:
{
// ??? 0 cm
if (Descend_to_Altitude(110,27) == 1) {
mission_step += 1; // ??????
}
}
break;
case 65:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 66:
mission_step += Horizontal_Move(50,18,90); // Move horizontally
break;
case 67:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 68:
{
// ??? 100 cm
if (Ascend_to_Altitude(150,25) == 1) {
mission_step += 1; // ??????
}
}
break;
case 69:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 70:
mission_step += Horizontal_Move(50,18,360); // Move horizontally
break;
case 71:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 72:
mission_step += Horizontal_Move(50,18,90); // Move horizontally
break;
case 73:
if (time_dly_cnt_ms < 2000)
{
time_dly_cnt_ms += 20;
}
else
{
time_dly_cnt_ms = 0;
mission_step += 1;
}
break;
case 74:
{
// ??
if (OneKey_Land() == 1)
{
mission_step = 0; // ????,????
}
}
break;
default:
break;
}
}
}
else
{
// ??????,??????
// ??????????
}
}根据这段代码写pid控制