PWM32EPRO V3.0:新增方形八键遥控支持

新增八键功能:0x03开关、0x01模式切换、0x07静态暖光W、0x09静态冷光C、0x0B亮度增加、0x05亮度降低、0x0C减速、0x0A加速。静态和动态模式均支持亮度调节,动态模式支持10档速度,模式键循环切换。

修正方形遥控宏定义命名;模式、亮度和速度键复用500ms长按重复处理。沿用原固定窗口433解码及通码/地址过滤机制,最多保存5个遥控;对码窗口内长按冷光C键对码、暖光W键清码。433接收GPIO5及外接按键禁用配置保持不变。

版本更新为V3.0,同步编译产物、完整烧录BIN与OTA文件,校验码15811E00;release/online仅保留最新文件。已完成编译链接及发布文件一致性检查。此前无输出、无蓝牙广播问题仍待硬件复测确认,本次不标记为已解决。
This commit is contained in:
2026-09-07 11:22:39 +08:00
parent a1b914709d
commit 812d49209f
71 changed files with 3572 additions and 3715 deletions
@@ -73,21 +73,21 @@
//方形
#define F_ON_OFF 0X03 //开关
#define F_KEY_POWER_TOGGLE 0x03U // power toggle
#define F_Mode_choose 0X01 //七彩
#define F_KEY_MODE_NEXT 0x01U // next mode
#define F_Brightness_100 0X07 //
#define F_KEY_WARM_STATIC 0x07U // static warm
#define F_Brightness_10 0X09
#define F_KEY_COOL_STATIC 0x09U // static cool
#define F_Time_1h 0x0B
#define F_KEY_BRIGHTNESS_UP 0x0BU // brightness +
#define F_Time_2h 0x05
#define F_KEY_BRIGHTNESS_DOWN 0x05U // brightness -
#define F_Speed_add 0x0C
#define F_KEY_SPEED_DOWN 0x0CU // speed -
#define F_Speed_dow 0x0A
#define F_KEY_SPEED_UP 0x0AU // speed +
@@ -227,7 +227,7 @@ static uint8_t Pairing_IsTriggerCommand(uint8_t command)
{
return command == Brightness_H || command == Brightness_L ||
command == B_Brightness_H || command == B_Brightness_L ||
command == F_Brightness_10 || command == F_Brightness_100;
command == F_KEY_COOL_STATIC || command == F_KEY_WARM_STATIC;
}
static void Pairing_Replay_Deferred(void)
@@ -353,7 +353,7 @@ static void Encoder_key_NoCode(){
if(ssse != 0U || time_5s > PAIRING_WINDOW_TICKS) return;
if(!(res_data==Brightness_H||res_data==Brightness_L||
res_data==B_Brightness_H||res_data==B_Brightness_L||
res_data==F_Brightness_10||res_data==F_Brightness_100))
res_data==F_KEY_COOL_STATIC||res_data==F_KEY_WARM_STATIC))
{
return;
}
@@ -399,7 +399,7 @@ static void Encoder_key_NoCode(){
long_press_cnt=0;
pair_deferred_command=0U;
if(res_data==Brightness_H||res_data==B_Brightness_H||res_data==F_Brightness_10){
if(res_data==Brightness_H||res_data==B_Brightness_H||res_data==F_KEY_COOL_STATIC){
adress=receive_data >>8;
adress_H = (receive_data >> 16) & 0xff;
adress_L = (receive_data >> 8) & 0xff;
@@ -415,7 +415,7 @@ static void Encoder_key_NoCode(){
match_success=1;
Pairing_Feedback_Start(times_s);
}
else if(res_data==Brightness_L||res_data==B_Brightness_L||res_data==F_Brightness_100){
else if(res_data==Brightness_L||res_data==B_Brightness_L||res_data==F_KEY_WARM_STATIC){
pairing_data_changed=1U;
adress_H_array[0] = 0xff;
adress_L_array[0] = 0xff;
@@ -441,7 +441,7 @@ static void Encoder_key_NoCode(){
app_pairing_requested = 0U;
if(res_data==Brightness_H ||
res_data==B_Brightness_H ||
res_data==F_Brightness_10)
res_data==F_KEY_COOL_STATIC)
ble_remote_event_notify(0x0DU, 2U,
rf433_paired_count());
else
@@ -483,7 +483,7 @@ uint32_t KEY_STATE_re=0; //
//该函数选择那个按键为单击,哪个为长按按键
static void set_click(){
if(res_data==Mode_add||res_data==Mode_dow||res_data==F_ON_OFF||res_data==F_Mode_choose||res_data==ON||res_data==OFF){
if(res_data==Mode_add||res_data==Mode_dow||res_data==F_KEY_POWER_TOGGLE||res_data==F_KEY_MODE_NEXT||res_data==F_KEY_WARM_STATIC||res_data==F_KEY_COOL_STATIC||res_data==ON||res_data==OFF){
Key_TypeDef.KEY_STATE_Click=1; //单击
}else{
Key_TypeDef.KEY_STATE_LONG_PRESS=1; //长按
@@ -493,7 +493,12 @@ static void set_click(){
static uint8_t rf433_is_mode_step_command(uint8_t command)
{
return command == Mode_add || command == Mode_dow;
return command == Mode_add || command == Mode_dow ||
command == F_KEY_MODE_NEXT ||
command == F_KEY_BRIGHTNESS_UP ||
command == F_KEY_BRIGHTNESS_DOWN ||
command == F_KEY_SPEED_UP ||
command == F_KEY_SPEED_DOWN;
}
/*
@@ -593,6 +598,29 @@ void _433_fun(){
Stop_PWM();
}
break;
case F_KEY_POWER_TOGGLE:
if(deviceStatus==POWEROFF) Start_PWM();
else Stop_PWM();
break;
case F_KEY_MODE_NEXT:
if(deviceStatus==POWEROFF) break;
if(choose_mode_falsg >= REMOTE_MODE_MAX) choose_mode_falsg=REMOTE_MODE_MIN;
else choose_mode_falsg++;
choose_mode_bh=0;
startTimer(&timer1,1);
break;
case F_KEY_WARM_STATIC:
if(deviceStatus==POWEROFF) Start_PWM();
choose_mode_falsg=0U;
choose_mode_bh=0U;
startTimer(&timer1,1U);
break;
case F_KEY_COOL_STATIC:
if(deviceStatus==POWEROFF) Start_PWM();
choose_mode_falsg=1U;
choose_mode_bh=0U;
startTimer(&timer1,1U);
break;
case Mode_add:
if(POWEROFF==deviceStatus)break;
if(choose_mode_falsg>REMOTE_MODE_MAX){
@@ -649,6 +677,24 @@ void _433_fun(){
if(Speed>SPEED_MIN_LEVEL)Speed--;
}
break;
case F_KEY_BRIGHTNESS_UP:
if(deviceStatus==POWEROFF) break;
if(Brightness >= (BRIGHTNESS_MAX_PERCENT - BRIGHTNESS_RF_STEP_PERCENT)) Brightness=BRIGHTNESS_MAX_PERCENT;
else Brightness+=BRIGHTNESS_RF_STEP_PERCENT;
break;
case F_KEY_BRIGHTNESS_DOWN:
if(deviceStatus==POWEROFF) break;
if(Brightness <= (BRIGHTNESS_MIN_PERCENT + BRIGHTNESS_RF_STEP_PERCENT)) Brightness=BRIGHTNESS_MIN_PERCENT;
else Brightness-=BRIGHTNESS_RF_STEP_PERCENT;
break;
case F_KEY_SPEED_UP:
if(deviceStatus==POWEROFF || Mode==mode0) break;
if(Speed>SPEED_MIN_LEVEL) Speed--;
break;
case F_KEY_SPEED_DOWN:
if(deviceStatus==POWEROFF || Mode==mode0) break;
if(Speed<SPEED_MAX_LEVEL) Speed++;
break;
default:
if(POWEROFF==deviceStatus)break;
if(res_data>=16&&res_data<=255){