void key(void) {
if(KEY1==0) {
DelayMs(5);
if(KEY1==0)
{
while(KEY1==0);
switch(mod) {
case 0:
mod = 1 ;
set_f = 0;
OLED_CLS();
break;
case 1:
if(set_f>5) set_f = 0;
else set_f++;
break;
}
}
}
if(KEY2==0) {
DelayMs(5);
if(KEY2==0)
{
while(KEY2==0);
switch(mod) {
case 1:
switch(set_f) {
case 1: set_code[set_f]++; if(set_code[set_f]>80) set_code[set_f] = 0; break;
case 2: set_code[set_f] = set_code[set_f] + 10; if(set_code[set_f]>=2000) set_code[set_f] = 0; break;
case 3: set_code[set_f]++; if(set_code[set_f]>14) set_code[set_f] = 1; break;
case 4: set_code[set_f]++; if(set_code[set_f]>14) set_code[set_f] = 1; break;
case 5: set_code[set_f] = set_code[set_f]+10; if(set_code[set_f]>999) set_code[set_f] = 10; break;
}
break;
}
}
}
if(KEY3==0) {
DelayMs(5);
if(KEY3==0){
while(KEY3==0);
switch(mod) {
case 1:
switch(set_f) {
case 1: if(set_code[set_f]==0) set_code[set_f] = 80; else set_code[set_f] = set_code[set_f] - 1; break;
case 2: if(set_code[set_f]<=0) set_code[set_f] = 2000; else set_code[set_f] = set_code[set_f]-10; break;
case 3: if(set_code[set_f]==0) set_code[set_f] = 14; else set_code[set_f] = set_code[set_f]-1; break;
case 4: if(set_code[set_f]==0) set_code[set_f] = 14; else set_code[set_f] = set_code[set_f]-1; break;
case 5: if(set_code[set_f]==0) set_code[set_f] = 1000; else set_code[set_f] = set_code[set_f]-10; break;
}
break;
}
}
}
if(KEY4==0) {
DelayMs(5);
if(KEY4==0)
{
while(KEY4==0);
switch(mod) {
case 1:
Writeflash(0,set_code,0,20);
mod = 0 ;
OLED_CLS();
break;
}
}
}
}
void display(void) {
int i;
switch(mod) {
case 0:
OLED_ShowCC(0,0,"==水质检测系统==");
sprintf(str,"水温:%02d.%d℃ ",(u16)temperature/10,(u16)temperature%10);
OLED_ShowCC(0,2,(unsigned char *)str);
sprintf(str,"TDS :%03dppm ",(int)TDS_DAT) ;
OLED_ShowCC(0,4,(unsigned char *)str);
sprintf(str,"浊度:%03d PH:%.1f ",(int)turbidity,PH) ;
str[16] = '\0';
OLED_ShowCC(0,6,(unsigned char *)str);
break;
case 1:
OLED_ShowCC(0,0,"====参数设置====");
sprintf(str,"水温:%02d℃ TDS ",(int)set_code[1]) ;
if(set_f==1) i = 3; else i = 0;
OLED_ShowCC_S(0,2,(unsigned char *)str,6,i);
sprintf(str,"浊度:%04d %04d ",(int)set_code[2],(int)set_code[5]) ;
if(set_f==2) {i = 4;} else if(set_f==5) i = 4; else i = 0;
OLED_ShowCC_S(0,4,(unsigned char *)str,6+(set_f-2)*1.7,i);
sprintf(str,"PH_L:%02d PH_H:%02d",(int)set_code[3],(int)set_code[4]) ;
if((set_f>=3)&(set_f<=4)) i = 2; else i = 0;
OLED_ShowStr_S(0,6,(unsigned char *)str,6+(set_f-3)*8,i,2);
break;
}
}
void run(void) {
if(turbidity>set_code[2]) { eer_f = 10;
else if(temperature > set_code[1]*10) { eer_f = 10;
else if((PH<=set_code[3])||(PH>=set_code[4])) { eer_f = 10; }
else if(TDS_DAT > set_code[5]) { eer_f = 10; }
else { eer_f = 0;
}
int main(void) {
u8 i;
DelayInit();
DelayMs(500);
usart2_init(9600);
ADC1_DMA_Config();
Gizwits_Init();
Key_Init();
TIM2_Int_Init(10000,3600);
TIM_Cmd(TIM2, ENABLE);
OLED_Init();
OLED_CLS();
mod = 0;
DS18B20_Init();
Readflash(set_code,0,20);
DelayMs(10);
while(smart_config)
{
gizwitsHandle((dataPoint_t *)¤tDataPoint);
if(KEY2 == 0) smart_config = 0;
if(KEY3 == 0) {
OLED_CLS();
OLED_ShowStr(0,0,"===Device Starting===" ,1);
OLED_ShowStr(0,1,"==WIFI smart_config==" ,1);
OLED_ShowStr(0,2,"WIFI_SOFTAP_MODE" ,1);
OLED_ShowStr(0,3,"SSID:XPG-GAgne- " ,1);
OLED_ShowStr(0,4,"password:123456789" ,1);
OLED_ShowStr(0,5,"Operation on app" ,1);
}
if(KEY4 == 0) {
OLED_CLS();
OLED_ShowStr(0,0,"===Device Starting===" ,1);
OLED_ShowStr(0,1,"==WIFI smart_config==" ,1);
OLED_ShowStr(0,2,"WIFI_AIRLINK_MODE" ,1);
OLED_ShowStr(0,3,"Distribution network" ,1);
OLED_ShowStr(0,4," by broadcasting" ,1);
OLED_ShowStr(0,5,"Operation on app" ,1);
}
OLED_ShowStr(i*8,6,">",1);
i++;
if(i>=15){OLED_ShowStr(0,6," ",1);i = 0;}
DelayMs(500);
}
userInit();
OLED_CLS();
while (1) {
PH = (float)ADCConvertedValue[1];
PH = PH * (3.3/4096) * 2;
PH = PH * (-5.7541) + 16.654;
if(PH > 14.0) PH = 14.0;
if(PH < 0) PH = 0.0;
PH_temp = PH ;
turbidity = (float)ADCConvertedValue[0]*3.3/4096;
turbidity = turbidity_K - turbidity*865.68;
turbidity = turbidity-200;
if(turbidity<35) turbidity = 0;
turbidity_temp = turbidity;
TDS_DAT = (ADCConvertedValue[2]/4095.0)*3.3;
TDS_DAT = 66.71*TDS_DAT*TDS_DAT*TDS_DAT-127.93*TDS_DAT*TDS_DAT+428.7*TDS_DAT;
if(TDS_DAT<20) TDS_DAT = 0;
temperature = DS18B20_Get_Temp();
temperature_temp = (float)temperature/10;
display();
key();
if(mod==0)run();
userHandle();
gizwitsHandle((dataPoint_t *)¤tDataPoint);
}
}