云台底层控制写完,未测试

This commit is contained in:
forbelief 2016-04-27 17:26:39 +08:00
parent 73d440be4d
commit 7d46287def
9 changed files with 2079 additions and 1766 deletions

File diff suppressed because it is too large Load diff

View file

@ -1946,9 +1946,6 @@
<file>
<name>$PROJ_DIR$\..\src\app\debug.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\src\app\display.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\src\app\input.c</name>
</file>
@ -1970,6 +1967,9 @@
<configuration>Debug</configuration>
</excluded>
</file>
<file>
<name>$PROJ_DIR$\..\src\app\orient.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\src\app\output.c</name>
</file>

View file

@ -222,9 +222,6 @@
<file>
<name>$PROJ_DIR$\..\src\app\debug.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\src\app\display.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\src\app\input.c</name>
</file>
@ -243,6 +240,9 @@
<file>
<name>$PROJ_DIR$\..\src\app\NormalDemo_Flash.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\src\app\orient.c</name>
</file>
<file>
<name>$PROJ_DIR$\..\src\app\output.c</name>
</file>

View file

@ -16,32 +16,33 @@
/*
* 8266
* µ÷ÊÔÄ£¿é,»ò8266
*/
#define WIFI_UARTX UART0 // PTA1,PTA2
#define DEBUG_UARTX UART0 // PTA1,PTA2
/*
* µ÷ÊÔÄ£¿é,»òÔÆÌ¨
* ÔÆÌ¨
*/
#define DEBUG_UARTX UART1 // PTC3,PTC4
#define ORIENT_UARTX UART1 // PTC3,PTC4
#define RE_DE_PINX PTC1
/*
*
*/
#define UP_KEY_PINX PTE20
#define DOWN_KEY_PINX PTA17
#define OK_KEY_PINX PTE23
#define RET_KEY_PINX PTA4
#define AMS_KEY_PINX PTA5
#define UP_KEY_PINX PTA4
#define DOWN_KEY_PINX PTA5
#define OK_KEY_PINX PTE20
#define RET_KEY_PINX PTE30
#define AMS_KEY_PINX PTD5
#define WIFI_KEY_PINX PTD7
#define MR_KEY_PINX PTE30
#define MR_KEY_PINX PTE23
#define MB_KEY_PINX PTA16
#define MUVB_KEY_PINX PTD6
#define MUVB_KEY_PINX PTD4
// knob用必须是PTA或PTD端口的
#define KNOB_A_PINX PTD6
#define KNOB_B_PINX PTD7
#define KNOB_KEY_PINX PTD4
#define KNOB_A_PINX PTD7
#define KNOB_B_PINX PTD6
#define KNOB_KEY_PINX PTE20
@ -56,19 +57,21 @@
*/
#define DS1302_CE_PINX PTB2
#define DS1302_CLK_PINX PTB1
#define DS1302_IO_PINX PTB0
#define DS1302_IO_PINX PTB3
/*
*
*
*/
#define LGRED_PINX PTC12
#define LGBLUE_PINX PTC13
#define LGUVB_PINX PTC15
#define WATER_PINX PTC16
#define LGRED_PINX PTC17
#define LGBLUE_PINX PTC16
#define LGUVB_PINX PTC13
#define WATER_PINX PTD1
/*
* led控制
*/
#define LG1_PINX PTC9
#define LG2_PINX PTC8
#define LG3_PINX PTC7
#endif // CONFIG_H

View file

@ -0,0 +1,51 @@
/*
* orient.h -
*
*
*/
#ifndef ORIENT_H
#define ORIENT_H
#include <stdint.h>
typedef enum orient_
{
ORIENT_UP = 0, ORIENT_DOWN, ORIENT_RIGHT, ORIENT_LEFT
} orient;
typedef enum preset_op_
{
PRESET_SET = 0, PRESET_CLEAR, PRESET_CALL
} preset_op;
typedef enum orient_mode_
{
MODE_AUTO = 0, MODE_MANUL
} orient_mode;
void orient_init(void);
void orient_setspeed(uint8_t addr, orient ori, uint8_t spd);
void orient_setpreset(uint8_t addr, preset_op op, uint8_t npre);
void orient_setmode(uint8_t addr, orient_mode mod);
#endif /* ORIENT_H */

View file

@ -0,0 +1,118 @@
/*
* orient.c -
*
*
*/
#include "uart.h"
#include "include/orient.h"
#include "include/config.h"
void orient_init(void)
{
uart_init(ORIENT_UARTX, 2400);
orient_setmode(0, MODE_MANUL);
orient_setmode(1, MODE_MANUL);
return;
}
/*
* orient_setspeed() -
*
* @addr:
* @ori:
* @spd: 0~100
*/
void orient_setspeed(uint8_t addr, orient ori, uint8_t spd)
{
uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, 0x00, 0x00 };
switch (ori)
{
case ORIENT_UP:
cmd[3] = 0x08;
break;
case ORIENT_DOWN:
cmd[3] = 0x10;
break;
case ORIENT_LEFT:
cmd[3] = 0x04;
break;
case ORIENT_RIGHT:
cmd[3] = 0x02;
default:
break;
}
if (spd > 100)
{
spd = 100;
}
cmd[4] = 0x3f * spd / 100;
cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
uart_sendN(ORIENT_UARTX, cmd, 7);
return;
}
/*
* orient_setpreset() -
*
* @addr:
* @op:
* @npre:
*/
void orient_setpreset(uint8_t addr, preset_op op, uint8_t npre)
{
uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, npre, 0x00 };
switch (op)
{
case PRESET_SET:
cmd[3] = 0x03;
break;
case PRESET_CALL:
cmd[3] = 0x07;
break;
case PRESET_CLEAR:
cmd[3] = 0x05;
break;
default:
break;
}
cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
uart_sendN(ORIENT_UARTX, cmd, 7);
return;
}
/*
* orient_setmode() -
*
* @addr:
* @mod:
*/
void orient_setmode(uint8_t addr, orient_mode mod)
{
uint8_t cmd[7] = { 0xff, addr, 0x00, 0x00, 0x00, 0x00, 0x00 };
switch (mod)
{
case MODE_AUTO:
cmd[2] = 0x90;
break;
case MODE_MANUL:
cmd[2] = 0x00;
break;
default:
break;
}
cmd[6] = cmd[1] + cmd[2] + cmd[3] + cmd[4] + cmd[5];
uart_sendN(ORIENT_UARTX, cmd, 7);
return;
}

View file

@ -11,6 +11,7 @@
#include "include/pm_time.h"
#include "include/plan_handle.h"
#include "include/pm_flash.h"
#include "include/orient.h"
/*
@ -26,5 +27,6 @@ void pm_init(void)
tft_init();
ds1302_init();
plan_handle_init(); // 计划处理初始化必须在flash初始化之后
orient_init();
return;
}

View file

@ -2,6 +2,76 @@
* tft.c - tft ÏÔʾÆÁµÄ½Ó¿Ú
*
* uart hmi·½Ê½
*
* switch (tft_stt.pgn)
* {
* case ORIGINAL_PG:
* switch (kvp_menu[etn].attr)
* {
* case R_NUM:
* break;
* case RW_NUM:
* break;
* case RW_PIC:
* break;
* case SW_PAGE:
* break;
* case R_TXT:
* break;
* default:
* break;
* }
* break;
* case MENU_PG:
* switch (kvp_menu[etn].attr)
* {
* case R_NUM:
* break;
* case RW_NUM:
* break;
* case RW_PIC:
* break;
* case SW_PAGE:
* break;
* case R_TXT:
* break;
* default:
* break;
* }
* break;
* case OBJ_SET_PG:
* switch (kvp_obj_set[tft_stt.objn][etn].attr)
* {
* case R_NUM:
* break;
* case RW_NUM:
* break;
* case RW_PIC:
* break;
* case SW_PAGE:
* break;
* case R_TXT:
* break;
* default:
* break;
* }
* break;
* default:
* break;
* }
*
*
*
* tft_stt -
* kvp_* -
*
*
* *_lyt - kvp_*
* kvp_*
* *_lyt和kvp_*
* ( * )
*
*
*/
#include <stdint.h>
@ -17,6 +87,8 @@
#include "include/plan_handle.h"
#include "include/tft_plan_internal.h"
#include "include/pm_flash.h"
#include "include/orient.h"
@ -37,7 +109,7 @@ typedef enum page_name_
typedef enum entry_attr_
{
R_NUM = 0, RW_NUM, RW_PIC, SW_PAGE, R_TXT
R_NUM = 0, RW_NUM, RW_PIC, SW_PAGE, R_TXT, RW_TXT
} entry_attr;
typedef enum tft_colour_
@ -78,7 +150,7 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{ "bg_h", 14, RW_NUM }, { "bg_mi", 0, RW_NUM }, { "ed_h", 14, RW_NUM }, { "ed_mi", 0, RW_NUM }, // 5~8
{ "lg_r", 0, RW_PIC}, { "lg_b", 0, RW_PIC }, { "lg_uvb", 0, RW_PIC }, { "water", 0, RW_PIC }, // 9~12
{ "pd_d", 3, RW_NUM }, { "pd_h", 3, RW_NUM }, { "pd_mi", 3, RW_NUM }, // 13~15
{ "x", 0, RW_NUM }, { "y", 0, RW_NUM }, // 16~17
{ "x", 0, RW_TXT }, { "y", 0, RW_TXT }, // 16~17
{ "cnt", 0, R_NUM } //18
}, // 0
{
@ -87,7 +159,7 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{ "bg_h", 14, RW_NUM }, { "bg_mi", 0, RW_NUM }, { "ed_h", 14, RW_NUM }, { "ed_mi", 0, RW_NUM }, // 5~8
{ "lg_r", 0, RW_PIC}, { "lg_b", 0, RW_PIC }, { "lg_uvb", 0, RW_PIC }, { "water", 0, RW_PIC }, // 9~12
{ "pd_d", 3, RW_NUM }, { "pd_h", 3, RW_NUM }, { "pd_mi", 3, RW_NUM }, // 13~15
{ "x", 0, RW_NUM }, { "y", 0, RW_NUM }, // 16~17
{ "x", 0, RW_TXT }, { "y", 0, RW_TXT }, // 16~17
{ "cnt", 0, R_NUM } //18
}, // 1
{
@ -96,7 +168,7 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{ "bg_h", 14, RW_NUM }, { "bg_mi", 0, RW_NUM }, { "ed_h", 14, RW_NUM }, { "ed_mi", 0, RW_NUM }, // 5~8
{ "lg_r", 0, RW_PIC}, { "lg_b", 0, RW_PIC }, { "lg_uvb", 0, RW_PIC }, { "water", 0, RW_PIC }, // 9~12
{ "pd_d", 3, RW_NUM }, { "pd_h", 3, RW_NUM }, { "pd_mi", 3, RW_NUM }, // 13~15
{ "x", 0, RW_NUM }, { "y", 0, RW_NUM }, // 16~17
{ "x", 0, RW_TXT }, { "y", 0, RW_TXT }, // 16~17
{ "cnt", 0, R_NUM } //18
}, // 2
{
@ -105,7 +177,7 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{ "bg_h", 14, RW_NUM }, { "bg_mi", 0, RW_NUM }, { "ed_h", 14, RW_NUM }, { "ed_mi", 0, RW_NUM }, // 5~8
{ "lg_r", 0, RW_PIC}, { "lg_b", 0, RW_PIC }, { "lg_uvb", 0, RW_PIC }, { "water", 0, RW_PIC }, // 9~12
{ "pd_d", 3, RW_NUM }, { "pd_h", 3, RW_NUM }, { "pd_mi", 3, RW_NUM }, // 13~15
{ "x", 0, RW_NUM }, { "y", 0, RW_NUM }, // 16~17
{ "x", 0, RW_TXT }, { "y", 0, RW_TXT }, // 16~17
{ "cnt", 0, R_NUM } //18
}, // 3
{
@ -114,7 +186,7 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{ "bg_h", 14, RW_NUM }, { "bg_mi", 0, RW_NUM }, { "ed_h", 14, RW_NUM }, { "ed_mi", 0, RW_NUM }, // 5~8
{ "lg_r", 0, RW_PIC}, { "lg_b", 0, RW_PIC }, { "lg_uvb", 0, RW_PIC }, { "water", 0, RW_PIC }, // 9~12
{ "pd_d", 3, RW_NUM }, { "pd_h", 3, RW_NUM }, { "pd_mi", 3, RW_NUM }, // 13~15
{ "x", 0, RW_NUM }, { "y", 0, RW_NUM }, // 16~17
{ "x", 0, RW_TXT }, { "y", 0, RW_TXT }, // 16~17
{ "cnt", 0, R_NUM } //18
}, // 4
{
@ -123,7 +195,7 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{ "bg_h", 14, RW_NUM }, { "bg_mi", 0, RW_NUM }, { "ed_h", 14, RW_NUM }, { "ed_mi", 0, RW_NUM }, // 5~8
{ "lg_r", 0, RW_PIC}, { "lg_b", 0, RW_PIC }, { "lg_uvb", 0, RW_PIC }, { "water", 0, RW_PIC }, // 9~12
{ "pd_d", 3, RW_NUM }, { "pd_h", 3, RW_NUM }, { "pd_mi", 3, RW_NUM }, // 13~15
{ "x", 0, RW_NUM }, { "y", 0, RW_NUM }, // 16~17
{ "x", 0, RW_TXT }, { "y", 0, RW_TXT }, // 16~17
{ "cnt", 0, R_NUM } //18
}, // 5
{
@ -132,7 +204,7 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{ "bg_h", 14, RW_NUM }, { "bg_mi", 0, RW_NUM }, { "ed_h", 14, RW_NUM }, { "ed_mi", 0, RW_NUM }, // 5~8
{ "lg_r", 0, RW_PIC}, { "lg_b", 0, RW_PIC }, { "lg_uvb", 0, RW_PIC }, { "water", 0, RW_PIC }, // 9~12
{ "pd_d", 3, RW_NUM }, { "pd_h", 3, RW_NUM }, { "pd_mi", 3, RW_NUM }, // 13~15
{ "x", 0, RW_NUM }, { "y", 0, RW_NUM }, // 16~17
{ "x", 0, RW_TXT }, { "y", 0, RW_TXT }, // 16~17
{ "cnt", 0, R_NUM } //18
}, // 6
{
@ -141,7 +213,7 @@ kv_pair kvp_obj_set[][PLAN_DATA_NUM] =
{ "bg_h", 14, RW_NUM }, { "bg_mi", 0, RW_NUM }, { "ed_h", 14, RW_NUM }, { "ed_mi", 0, RW_NUM }, // 5~8
{ "lg_r", 0, RW_PIC}, { "lg_b", 0, RW_PIC }, { "lg_uvb", 0, RW_PIC }, { "water", 0, RW_PIC }, // 9~12
{ "pd_d", 3, RW_NUM }, { "pd_h", 3, RW_NUM }, { "pd_mi", 3, RW_NUM }, // 13~15
{ "x", 0, RW_NUM }, { "y", 0, RW_NUM }, // 16~17
{ "x", 0, RW_TXT }, { "y", 0, RW_TXT }, // 16~17
{ "cnt", 0, R_NUM } //18
}, // 7
};
@ -682,6 +754,50 @@ static void tft_input(void)
tft_set_color(tft_stt.etn, TFT_PURPLE);
clear_key_m();
break;
case RW_TXT:
tft_set_color(tft_stt.etn, TFT_RED);
in_lmt = tft_input_limit(kvp_obj_set[tft_stt.objn][tft_stt.etn].key);
bg_v = kvp_obj_set[tft_stt.objn][tft_stt.etn].value;
knob_enable();
uint8_t addr = 0;
if (strcmp(kvp_obj_set[tft_stt.objn][tft_stt.etn].key, "x") == 0)
{
addr = 0;
}
else
{
addr = 1;
}
while (get_key_mean(RET_KEY) == N_KEY)
{
in_v = bg_v + get_knob_val();
if (in_v < in_lmt.min)
{
kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_lmt.min;
bg_v = in_lmt.min;
knob_clear();
}
else if (in_v > in_lmt.max)
{
kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_lmt.max;
bg_v = in_lmt.max;
knob_clear();
}
else
{
kvp_obj_set[tft_stt.objn][tft_stt.etn].value = in_v;
}
sprintf(tft_cmd_str, "%s.txt=\"%d\"", kvp_obj_set[tft_stt.objn][tft_stt.etn].key,
kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
tft_send_cmd(tft_cmd_str);
orient_setspeed(addr, kvp_obj_set[tft_stt.objn][tft_stt.etn].value >= 0 ? ORIENT_RIGHT : ORIENT_LEFT, kvp_obj_set[tft_stt.objn][tft_stt.etn].value);
}
orient_setmode(addr, MODE_MANUL);
knob_disable();
tft_set_color(tft_stt.etn, TFT_PURPLE);
clear_key_m();
break;
case SW_PAGE:
break;
default:

File diff suppressed because one or more lines are too long