- #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) //当按键1按下,进入阈值设置界面
- {
- 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; //进行温度阈值修改
- Humidity_Flag = 0;
- Lux_Flag = 0;
- }
- else if(KeyValue == 2) //当按键2按下
- {
- }
- else if(KeyValue == 3) //当按键3按下
- {
- }
- else if(KeyValue == 4) //当按键4按下
- {
- }
- //----------------------------------- Smart Home主界面 END -----------------------------------
- //----------------------------------- 阈值设置界面 BEGIN -----------------------------------
- while(ParaSet_Flag == 1)
- {
- KeyValue = Key_Scan();
- if(KeyValue == 1) //当按键1按下,退出阈值设置界面
- {
- ParaSet_Flag = 0;
- OLED_Clear();
- OLED_ShowString(0,0,"Smart Home",16);
- }
- else if(KeyValue == 2) //当按键2按下,上下移动选择需要设置的阈值
- {
- 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;//进行湿度阈值修改
- 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; //进行光照阈值修改
- }
- else
- {
- JumpCnt = 0;
- OLED_ShowString(86,0,"*",16);
- OLED_ShowString(86,2," ",16);
- OLED_ShowString(86,4," ",16);
- Temperature_Flag = 1;//进行温度阈值修改
- Humidity_Flag = 0;
- Lux_Flag = 0;
- }
-
- }
- else if(KeyValue == 3) //当按键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) //当按键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);
- }
- }
-
- }
- //----------------------------------- 阈值设置界面 END -----------------------------------
- //----------------------------------- 自动控制界面 BEGIN ---------------------------------
-
- //----------------------------------- 自动控制界面 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);
- }
- }
- }
复制代码
原理图: 无
仿真: 无
代码:
STM32_Iot_OK.7z
(188.33 KB, 下载次数: 22)
|