- #include "stm32f10x.h" // Device header
- #include "Delay.h"
- #include "KEY.h"
- #include "LED.h"
- #include "oled.h"
- #include "dht11.h"
- #include "esp8266.h"
- #include "Timer2.h"
- #include "AD.h"
- uint8_t KeyValue;
- uint8_t ParaSet_Flag;
- uint8_t temperature;
- uint8_t Humidity;
- uint16_t LightLux;
- uint8_t ERR;
- uint8_t TempSet = 25,HumidSet = 25,LuxSet = 25;
- uint8_t JumpCnt;
-
- uint8_t Temperature_Flag;
- uint8_t Humidity_Flag;
- uint8_t Lux_Flag;
- uint16_t Raw_LightLux; //原始光敏
- int main(void)
- {
- Key_Init();
- PC13_LED_Init();
- // Usart2_Init(115200);
- // DHT11_Init();
- AD_Init();
- Timer2_Init();
- OLED_Init();
- OLED_Clear();
- OLED_ShowString(24,0,"Smart Home",16);
- OLED_ShowString(0,2,"Temp: C",16);
- OLED_ShowString(0,4,"Humid: %",16);
- OLED_ShowString(0,6,"Lux: %",16);
- OLED_ShowNum(40,2,temperature,2,16);
- OLED_ShowNum(48,4,Humidity,2,16);
- OLED_ShowNum(32,6,LightLux,2,16);
- // do
- // {
- // ERR = WiFi_Connect_IoTServer();
- //
- // }while(ERR); //連接阿里云直到成功
-
-
- while(1)
- {
- //----------------------------------- Smart Home主界面 BEGIN -----------------------------------
- KeyValue = Key_Scan();
- if(KeyValue == 1) //當(dāng)按鍵1按下,進(jìn)入閾值設(shè)置界面
- {
- ParaSet_Flag = 1;
- OLED_Clear();
- OLED_ShowString(0,0,"Temp:",16);
- OLED_ShowString(86,0,"*",16);
- OLED_ShowString(0,2,"Humid:",16);
- OLED_ShowString(0,4,"Lux:",16);
- OLED_ShowNum(40,0,TempSet,2,16);
- OLED_ShowNum(48,2,HumidSet,2,16);
- OLED_ShowNum(32,4,LuxSet,2,16);
- Temperature_Flag = 1; //進(jìn)行溫度閾值修改
- Humidity_Flag = 0;
- Lux_Flag = 0;
- }
- else if(KeyValue == 2) //當(dāng)按鍵2按下
- {
- }
- else if(KeyValue == 3) //當(dāng)按鍵3按下
- {
- }
- else if(KeyValue == 4) //當(dāng)按鍵4按下
- {
- }
- //----------------------------------- Smart Home主界面 END -----------------------------------
- //----------------------------------- 閾值設(shè)置界面 BEGIN -----------------------------------
- while(ParaSet_Flag == 1)
- {
- KeyValue = Key_Scan();
- if(KeyValue == 1) //當(dāng)按鍵1按下,退出閾值設(shè)置界面
- {
- ParaSet_Flag = 0;
- OLED_Clear();
- OLED_ShowString(0,0,"Smart Home",16);
- }
- else if(KeyValue == 2) //當(dāng)按鍵2按下,上下移動(dòng)選擇需要設(shè)置的閾值
- {
- JumpCnt++;
- if(JumpCnt == 1)
- {
- OLED_ShowString(86,0," ",16);
- OLED_ShowString(86,2,"*",16);
- OLED_ShowString(86,4," ",16);
- Temperature_Flag = 0;
- Humidity_Flag = 1;//進(jìn)行濕度閾值修改
- Lux_Flag = 0;
- }
- else if(JumpCnt == 2)
- {
- OLED_ShowString(86,0," ",16);
- OLED_ShowString(86,2," ",16);
- OLED_ShowString(86,4,"*",16);
- Temperature_Flag = 0;
- Humidity_Flag = 0;
- Lux_Flag = 1; //進(jìn)行光照閾值修改
- }
- else
- {
- JumpCnt = 0;
- OLED_ShowString(86,0,"*",16);
- OLED_ShowString(86,2," ",16);
- OLED_ShowString(86,4," ",16);
- Temperature_Flag = 1;//進(jìn)行溫度閾值修改
- Humidity_Flag = 0;
- Lux_Flag = 0;
- }
-
- }
- else if(KeyValue == 3) //當(dāng)按鍵3按下,閾值+
- {
- if(Temperature_Flag == 1)
- {
- TempSet++;
- if(TempSet >= 99)
- {
- TempSet = 99;
- }
- OLED_ShowNum(40,0,TempSet,2,16);
- }
- else if(Humidity_Flag == 1)
- {
- HumidSet++;
- if(HumidSet >= 99)
- {
- HumidSet = 99;
- }
- OLED_ShowNum(48,2,HumidSet,2,16);
- }
- else if(Lux_Flag == 1)
- {
- LuxSet++;
- if(LuxSet >= 99)
- {
- LuxSet = 99;
- }
- OLED_ShowNum(32,4,LuxSet,2,16);
- }
- }
- else if(KeyValue == 4) //當(dāng)按鍵4按下,閾值-
- {
- if(Temperature_Flag == 1)
- {
- if(TempSet <= 0) TempSet = 0;
- else TempSet--;
- OLED_ShowNum(40,0,TempSet,2,16);
- }
- else if(Humidity_Flag == 1)
- {
- if(HumidSet <= 0) HumidSet = 0;
- else HumidSet--;
- OLED_ShowNum(48,2,HumidSet,2,16);
- }
- else if(Lux_Flag == 1)
- {
- if(LuxSet <= 0) LuxSet = 0;
- else LuxSet--;
- OLED_ShowNum(32,4,LuxSet,2,16);
- }
- }
-
- }
- //----------------------------------- 閾值設(shè)置界面 END -----------------------------------
- //----------------------------------- 自動(dòng)控制界面 BEGIN ---------------------------------
-
- //----------------------------------- 自動(dòng)控制界面 END -----------------------------------
- if(Timer2_5s_Flag == 1)
- {
- Timer2_5s_Flag = 0;
- DHT11_Read_Data(&temperature, &Humidity); //讀取溫濕度值
- Raw_LightLux=AD_GetValue(ADC_Channel_0); //光照值獲取
- LightLux = (((float)(4095-Raw_LightLux) / 4095) * 100);
- OLED_ShowString(0,2,"Temp: C",16);
- OLED_ShowString(0,4,"Humid: %",16);
- OLED_ShowString(0,6,"Lux: %",16);
- OLED_ShowNum(40,2,temperature,2,16);
- OLED_ShowNum(48,4,Humidity,2,16);
- OLED_ShowNum(32,6,LightLux,2,16);
- }
- }
- }
復(fù)制代碼
原理圖: 無(wú)
仿真: 無(wú)
代碼:
STM32_Iot_OK.7z
(188.33 KB, 下載次數(shù): 22)
2024-7-29 15:39 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|