2025-04-16 09:58:09 +08:00
|
|
|
|
#include "Ozone.h"
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD><C6B1><EFBFBD>
|
|
|
|
|
uint8_t ozone_running = 0; // Ĭ<>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
uint32_t ozone_timer = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
uint32_t OZONE_ON_TIME = 1; // <20><><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD>
|
|
|
|
|
uint32_t OZONE_OFF_TIME = 1; // ֹͣ1<D6B9><31><EFBFBD><EFBFBD>
|
|
|
|
|
|
2025-05-20 09:41:22 +08:00
|
|
|
|
void Save_Ozone_Time_To_EEPROM(uint32_t on_time, uint32_t off_time) // <20><><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
Save_Float_To_EEPROM(OZONE_ON_TIME_ADDR, (float)on_time); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
Save_Float_To_EEPROM(OZONE_OFF_TIME_ADDR, (float)off_time); // <20><><EFBFBD><EFBFBD>ֹͣʱ<D6B9><CAB1>
|
|
|
|
|
Inf_AT24C02_WriteByte(OZONE_FLAG_ADDR, OZONE_FLAG_VAL); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><>EEPROM<4F><4D>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OZENE_FLAG_ADDR
|
|
|
|
|
void Load_Ozone_Time_From_EEPROM(void)
|
|
|
|
|
{
|
|
|
|
|
uint8_t flag = Inf_AT24C02_ReadByte(OZONE_FLAG_ADDR);
|
|
|
|
|
|
|
|
|
|
if(flag == OZONE_FLAG_VAL)
|
|
|
|
|
{
|
|
|
|
|
// <20><>ȡʱ<C8A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
OZONE_ON_TIME = (uint32_t)Read_Float_From_EEPROM(OZONE_ON_TIME_ADDR);
|
|
|
|
|
OZONE_OFF_TIME = (uint32_t)Read_Float_From_EEPROM(OZONE_OFF_TIME_ADDR);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// <20><><EFBFBD><EFBFBD>EEPROM<4F><4D>û<EFBFBD><C3BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ݣ<EFBFBD>ʹ<EFBFBD><CAB9>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
Save_Ozone_Time_To_EEPROM(OZONE_ON_TIME, OZONE_OFF_TIME);
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-04-16 09:58:09 +08:00
|
|
|
|
void Ozone_Init(void)
|
|
|
|
|
{
|
2025-05-20 09:41:22 +08:00
|
|
|
|
Load_Ozone_Time_From_EEPROM();
|
2025-04-16 09:58:09 +08:00
|
|
|
|
ozone_running = 1; // <20>ϵ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
ozone_timer = 0; // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|
|
|
|
Ozone_Control(1); // <20><>ʼ״ֱ̬<CCAC>ӿ<EFBFBD><D3BF><EFBFBD>
|
|
|
|
|
// printf("Ozone Init OK, starting immediately\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void Ozone_Control_Update(void)
|
|
|
|
|
{
|
|
|
|
|
if(ozone_running)
|
|
|
|
|
{
|
|
|
|
|
// <20><>1<EFBFBD><31><EFBFBD>ӿ<EFBFBD>1<EFBFBD><31><EFBFBD>ӹص<D3B9><D8B5><EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
if(ozone_timer <= OZONE_ON_TIME)
|
|
|
|
|
{
|
|
|
|
|
Ozone_Control(1); // ֱ<>ӿ<EFBFBD><D3BF>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
// printf("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: %d<><64>\n", ozone_timer);
|
|
|
|
|
}
|
|
|
|
|
else if(ozone_timer <= (OZONE_ON_TIME + OZONE_OFF_TIME))
|
|
|
|
|
{
|
|
|
|
|
Ozone_Control(0);
|
|
|
|
|
// printf("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3>: %d<><64>\n", ozone_timer);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
ozone_timer = 0; // <20><><EFBFBD>ü<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ѭ<EFBFBD><D1AD>
|
|
|
|
|
Ozone_Control(1);
|
|
|
|
|
// printf("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ѭ<EFBFBD><D1AD>\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// Զ<>̿<EFBFBD><CCBF>ƹر<C6B9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ֹر<D6B9>״̬
|
|
|
|
|
Ozone_Control(0);
|
|
|
|
|
// printf("<22><><EFBFBD><EFBFBD><EFBFBD>ѹر<D1B9>(Զ<>̿<EFBFBD><CCBF><EFBFBD>)\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|