@@ -16,7 +16,9 @@
|
||||
|
||||
char config_buzzer_for_button_pass=1;
|
||||
char config_buzzer_for_button_longpass=1;
|
||||
char config_buzzer_for_sele_change=1;
|
||||
char config_buzzer_for_sele_change=0;
|
||||
|
||||
int config_oled_luminance=100;
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +28,7 @@ button B1,TACKA,TACKB;//创建一个按钮
|
||||
encoder E1;//创建一个编码器
|
||||
int mode=0;
|
||||
uint32_t run_tick=0,jump_tick=0;
|
||||
char str[32];
|
||||
|
||||
uint16_t fps=0,fps_=0;
|
||||
char sys_lan=0;
|
||||
|
||||
@@ -34,25 +36,9 @@ int encode_c=0;
|
||||
|
||||
int test_code=0;
|
||||
|
||||
menu menu_main=
|
||||
{
|
||||
0,0,
|
||||
"Main GUI\nInput mode\nBuzzer\nDisplay\nLanguage\nAbout",
|
||||
"主页\n输入模式\n蜂鸣器\n显示\n语言\n关于",5,
|
||||
NULL
|
||||
|
||||
|
||||
};
|
||||
|
||||
menu buzzer_setting=
|
||||
{
|
||||
0,0,
|
||||
"Back\nClick\nPress\nSele change",
|
||||
"返回\n点击\n长按\n选择切换",3,
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
word turnon=
|
||||
{
|
||||
@@ -66,6 +52,20 @@ word turnoff=
|
||||
"关"
|
||||
};
|
||||
|
||||
const char * GET_WORD(word*word,char lan)
|
||||
{
|
||||
switch(lan)
|
||||
{
|
||||
case 0:
|
||||
return word->en;
|
||||
break;
|
||||
case 1:
|
||||
return word->ch;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
int SHOW_MENU(menu *m,int encoder,char button,char lan,char dismode)
|
||||
{
|
||||
@@ -101,7 +101,7 @@ int SHOW_MENU(menu *m,int encoder,char button,char lan,char dismode)
|
||||
|
||||
if(m->r_sw_list!=NULL)
|
||||
{
|
||||
OLED_Str_list(96,0,16,m->r_sw_list,m->list_dis_top,4,1);
|
||||
OLED_Str_list(95,0,16,m->r_sw_list,m->list_dis_top,4,1);
|
||||
}
|
||||
|
||||
if(dismode==1)
|
||||
@@ -139,6 +139,174 @@ void da()
|
||||
BUZZER_PLAY_NOTES(0,morse_play_t1,0);
|
||||
mo_da();
|
||||
}
|
||||
//papers
|
||||
void main_gui()
|
||||
{
|
||||
char str[32];
|
||||
GEI_BUTTON_CODE(&TACKA,tack_a());
|
||||
GEI_BUTTON_CODE(&TACKB,tack_b());
|
||||
if(encode_c>0||TACKB.code!=0)
|
||||
{
|
||||
di();
|
||||
}
|
||||
if(encode_c<0||TACKA.code!=0)
|
||||
{
|
||||
da();
|
||||
}
|
||||
OLED_Str(0,0,8,moser_buff,0,1);
|
||||
|
||||
|
||||
fps_++;
|
||||
sprintf(str,"FPS:%d",fps);
|
||||
OLED_Str(0,56,8,str,0,1);
|
||||
|
||||
if(B1.code==255)
|
||||
{
|
||||
|
||||
if(config_buzzer_for_button_longpass==1)
|
||||
{
|
||||
BUZZER_PLAY_NOTES(1000,100,50);
|
||||
BUZZER_PLAY_NOTES(0,0,0);
|
||||
}
|
||||
|
||||
mode=2;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void main_menu()
|
||||
{
|
||||
static menu menu_main=
|
||||
{
|
||||
0,0,
|
||||
"Main GUI\nInput mode\nBuzzer\nDisplay\nLanguage\nAbout",
|
||||
"主页\n输入模式\n蜂鸣器\n显示\n语言\n关于",5,
|
||||
NULL
|
||||
};
|
||||
switch(SHOW_MENU(&menu_main,encode_c,B1.code,sys_lan,1))
|
||||
{
|
||||
case 0:
|
||||
//jump to main GUI
|
||||
mode=1;
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
//jump to buzzer setting
|
||||
mode=3;
|
||||
break;
|
||||
case 3:
|
||||
mode=4;
|
||||
break;
|
||||
}
|
||||
if(HAL_GetTick()>jump_tick){mode=1;}
|
||||
|
||||
}
|
||||
|
||||
void buzzer_settings()
|
||||
{
|
||||
static menu buzzer_setting=
|
||||
{
|
||||
0,0,
|
||||
"Back\nClick\nPress\nSele change",
|
||||
"返回\n点击\n长按\n选择切换",3,NULL
|
||||
};
|
||||
|
||||
char str[32];
|
||||
|
||||
buzzer_setting.r_sw_list=&str;
|
||||
sprintf(str,"../");
|
||||
if(config_buzzer_for_button_pass)
|
||||
{
|
||||
sprintf(str,"%s\n%s",str,GET_WORD(&turnon,sys_lan));
|
||||
}else
|
||||
{
|
||||
sprintf(str,"%s\n%s",str,GET_WORD(&turnoff,sys_lan));
|
||||
}
|
||||
if(config_buzzer_for_button_longpass)
|
||||
{
|
||||
sprintf(str,"%s\n%s",str,GET_WORD(&turnon,sys_lan));
|
||||
}else
|
||||
{
|
||||
sprintf(str,"%s\n%s",str,GET_WORD(&turnoff,sys_lan));
|
||||
}
|
||||
if(config_buzzer_for_sele_change)
|
||||
{
|
||||
sprintf(str,"%s\n%s",str,GET_WORD(&turnon,sys_lan));
|
||||
}else
|
||||
{
|
||||
sprintf(str,"%s\n%s",str,GET_WORD(&turnoff,sys_lan));
|
||||
}
|
||||
switch(SHOW_MENU(&buzzer_setting,encode_c,B1.code,sys_lan,0))
|
||||
{
|
||||
case 0:
|
||||
//jump to main GUI
|
||||
mode=2;
|
||||
break;
|
||||
case 1:
|
||||
if(config_buzzer_for_button_pass){config_buzzer_for_button_pass=0;}else{config_buzzer_for_button_pass=1;}
|
||||
break;
|
||||
case 2:
|
||||
if(config_buzzer_for_button_longpass){config_buzzer_for_button_longpass=0;}else{config_buzzer_for_button_longpass=1;}
|
||||
break;
|
||||
case 3:
|
||||
if(config_buzzer_for_sele_change){config_buzzer_for_sele_change=0;}else{config_buzzer_for_sele_change=1;}
|
||||
break;
|
||||
|
||||
}
|
||||
if(HAL_GetTick()>jump_tick){mode=2;}
|
||||
}
|
||||
|
||||
|
||||
void display_settings()
|
||||
{
|
||||
static menu display_setting=
|
||||
{
|
||||
0,0,
|
||||
"Back\nluminance\nSpin",
|
||||
"返回\n亮度\n旋转",2,NULL
|
||||
};
|
||||
static char config_oled_luminance_sele=0;
|
||||
char str[32];
|
||||
display_setting.r_sw_list=&str;
|
||||
|
||||
|
||||
if(config_oled_luminance_sele)
|
||||
{
|
||||
if(B1.code!=0)
|
||||
{
|
||||
config_oled_luminance_sele=0;
|
||||
}
|
||||
if(encode_c!=0)
|
||||
{
|
||||
config_oled_luminance+=encode_c;
|
||||
if(config_oled_luminance>100){config_oled_luminance=100;}
|
||||
if(config_oled_luminance<0){config_oled_luminance=0;}
|
||||
OLED_Setting_luminance(config_oled_luminance);
|
||||
|
||||
}
|
||||
sprintf(str,"../\n%3d%%",config_oled_luminance);
|
||||
SHOW_MENU(&display_setting,0,0,sys_lan,0);
|
||||
OLED_square(0,16,95,32,2);
|
||||
|
||||
}else
|
||||
{
|
||||
sprintf(str,"../\n%3d%%",config_oled_luminance);
|
||||
switch(SHOW_MENU(&display_setting,encode_c,B1.code,sys_lan,0))
|
||||
{
|
||||
case 0:
|
||||
mode=2;
|
||||
break;
|
||||
case 1:
|
||||
config_oled_luminance_sele=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(HAL_GetTick()>jump_tick){config_oled_luminance_sele=0;mode=2;}
|
||||
}
|
||||
|
||||
void mymain()
|
||||
{
|
||||
@@ -147,12 +315,15 @@ void mymain()
|
||||
|
||||
|
||||
|
||||
OLED_Init();//屏幕初始化
|
||||
|
||||
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);//启动n通道的pwm
|
||||
HAL_TIM_Base_Start_IT(&htim3);
|
||||
OLED_Init();//屏幕初始化
|
||||
OLED_Setting_luminance(config_oled_luminance);
|
||||
|
||||
BUZZER_PLAY_INIT();
|
||||
MUTE(0);
|
||||
|
||||
|
||||
BUZZER_PLAY_NOTES(1000,1000,50);
|
||||
BUZZER_PLAY_NOTES(0,1000,50);
|
||||
|
||||
@@ -177,23 +348,9 @@ void mymain()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(encode_c!=0)
|
||||
{
|
||||
jump_tick=HAL_GetTick()+10000;
|
||||
}
|
||||
|
||||
|
||||
if(config_buzzer_for_sele_change==1&&(mode==2||mode==3))
|
||||
{
|
||||
BUZZER_PLAY_NOTES(1000,50,50);
|
||||
BUZZER_PLAY_NOTES(0,0,0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
switch(mode)
|
||||
{
|
||||
case 0:
|
||||
@@ -204,99 +361,20 @@ void mymain()
|
||||
break;
|
||||
case 1:
|
||||
//主界面
|
||||
GEI_BUTTON_CODE(&TACKA,tack_a());
|
||||
GEI_BUTTON_CODE(&TACKB,tack_b());
|
||||
if(encode_c>0||TACKB.code!=0)
|
||||
{
|
||||
di();
|
||||
}
|
||||
if(encode_c<0||TACKA.code!=0)
|
||||
{
|
||||
da();
|
||||
}
|
||||
OLED_Str(0,0,8,moser_buff,0,1);
|
||||
|
||||
|
||||
fps_++;
|
||||
sprintf(str,"FPS:%d",fps);
|
||||
OLED_Str(0,56,8,str,0,1);
|
||||
|
||||
if(B1.code==255)
|
||||
{
|
||||
|
||||
if(config_buzzer_for_button_longpass==1)
|
||||
{
|
||||
BUZZER_PLAY_NOTES(1000,100,50);
|
||||
BUZZER_PLAY_NOTES(0,0,0);
|
||||
}
|
||||
|
||||
mode=2;
|
||||
jump_tick=HAL_GetTick()+10000;
|
||||
}
|
||||
|
||||
main_gui();
|
||||
break;
|
||||
case 2:
|
||||
//菜单界面
|
||||
|
||||
switch(SHOW_MENU(&menu_main,encode_c,B1.code,sys_lan,1))
|
||||
{
|
||||
case 0:
|
||||
//jump to main GUI
|
||||
mode=1;
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
//jump to buzzer setting
|
||||
mode=3;
|
||||
break;
|
||||
}
|
||||
if(HAL_GetTick()>jump_tick){mode=1;}
|
||||
main_menu();
|
||||
break;
|
||||
|
||||
case 3:
|
||||
//buzzer setting
|
||||
buzzer_setting.r_sw_list=&str;
|
||||
sprintf(str,"../");
|
||||
if(config_buzzer_for_button_pass)
|
||||
{
|
||||
sprintf(str,"%s%s",str,"\non");
|
||||
}else
|
||||
{
|
||||
sprintf(str,"%s%s",str,"\nof");
|
||||
}
|
||||
if(config_buzzer_for_button_longpass)
|
||||
{
|
||||
sprintf(str,"%s%s",str,"\non");
|
||||
}else
|
||||
{
|
||||
sprintf(str,"%s%s",str,"\nof");
|
||||
}
|
||||
if(config_buzzer_for_sele_change)
|
||||
{
|
||||
sprintf(str,"%s%s",str,"\non");
|
||||
}else
|
||||
{
|
||||
sprintf(str,"%s%s",str,"\nof");
|
||||
}
|
||||
switch(SHOW_MENU(&buzzer_setting,encode_c,B1.code,sys_lan,0))
|
||||
{
|
||||
case 0:
|
||||
//jump to main GUI
|
||||
mode=2;
|
||||
break;
|
||||
case 1:
|
||||
if(config_buzzer_for_button_pass){config_buzzer_for_button_pass=0;}else{config_buzzer_for_button_pass=1;}
|
||||
break;
|
||||
case 2:
|
||||
if(config_buzzer_for_button_longpass){config_buzzer_for_button_longpass=0;}else{config_buzzer_for_button_longpass=1;}
|
||||
break;
|
||||
case 3:
|
||||
if(config_buzzer_for_sele_change){config_buzzer_for_sele_change=0;}else{config_buzzer_for_sele_change=1;}
|
||||
break;
|
||||
|
||||
}
|
||||
if(HAL_GetTick()>jump_tick){mode=1;}
|
||||
buzzer_settings();
|
||||
break;
|
||||
|
||||
case 4:
|
||||
display_settings();
|
||||
break;
|
||||
|
||||
}
|
||||
@@ -331,6 +409,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
{
|
||||
E1.code+=1;
|
||||
E1.move_flag=1;//发生旋转的标记
|
||||
jump_tick=HAL_GetTick()+10000;
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
@@ -338,48 +417,14 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
|
||||
{
|
||||
E1.code-=1;
|
||||
E1.move_flag=1;//发生旋转的标记
|
||||
jump_tick=HAL_GetTick()+10000;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
/*
|
||||
//外部电键输入
|
||||
case tack_a_Pin:
|
||||
switch(tack_a())
|
||||
{
|
||||
case 0:
|
||||
//di();
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case tack_b_Pin:
|
||||
switch(tack_b())
|
||||
{
|
||||
case 0:
|
||||
//da();
|
||||
break;
|
||||
case 1:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
case en_c_Pin://编码器C脚 按钮
|
||||
switch(en_c())//监测是上升沿还是下降沿
|
||||
{
|
||||
case 0:
|
||||
|
||||
//mo_one_tick(0);
|
||||
break;
|
||||
case 1:
|
||||
|
||||
//mo_one_tick(1);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
*/
|
||||
|
||||
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -28,8 +28,8 @@ typedef struct
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *list_en;
|
||||
const char *list_ch;
|
||||
const char *en;
|
||||
const char *ch;
|
||||
}word;
|
||||
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@ void OLED_Init(void);
|
||||
|
||||
void OLED_Cache_to_hardware();
|
||||
|
||||
void OLED_Setting_luminance(unsigned char a);
|
||||
|
||||
void OLED_set_dot(unsigned char x,unsigned char y,unsigned char dot_type);
|
||||
void OLED_Pix(unsigned char x,unsigned char y,unsigned char w,unsigned char h,const char *p,unsigned char type);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user