此程序是通過adc通道采集煙霧值 串口采集溫濕度
并根據所得到值是否符合閾值條件來決定是否使能風扇和加濕器
通過藍牙hc05與上位機可完成通信
主程序較為簡單 如下
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart3.h"
- #include "dht11.h"
- #include "adc.h"
- #include "beep.h"
- #include "hc05.h"
- #include <stm32f10x.h>
- /************************************************
- ALIENTEK精英STM32開發板實驗29
- DHT11數字溫濕度傳感器 實驗
- ************************************************/
- int main(void)
- {
- u8 t=0;
- u8 temperature;
- u8 humidity;
- u8 adcx;
-
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
- usart3_init(9600); //串口初始化為115200
- LED_Init(); //初始化與LED連接的硬件接口
- LCD_Init(); //初始化LCD
- Adc_Init();
- BEEP_Init();
- HC05_Init();
- while(1)
- {
- if(t%10==0) //每100ms讀取一次
- {
- DHT11_Read_Data(&temperature,&humidity); //讀取溫濕度值
- adcx=Get_Adc_Average(ADC_Channel_1,10); //讀取煙霧值
- u3_printf("溫度=%d",temperature );
-
- u3_printf("濕度=%d",humidity);
-
- u3_printf("煙霧值=%d",adcx);
- BEEP=0;
- delay_ms(500);
- if(adcx>1170) BEEP=1;
- delay_ms(500);
- if(temperature>28||temperature<18||adcx>500);
- GPIO_SetBits(GPIOB,GPIO_Pin_5); //LED0對應引腳GPIOB.5拉高,滅 等同LED0=1;
-
- if(humidity<20);
- {
- GPIO_SetBits(GPIOE,GPIO_Pin_5); //LED1對應引腳GPIOE.5拉低,亮 等同LED1=0
- }
- if(humidity>40)
- {
- GPIO_ResetBits(GPIOE,GPIO_Pin_5);
- }
- }
- delay_ms(500);
- t++;
-
- if(t==20)
- {
- t=0;
- LED0=!LED0;
- }
- }
- }
復制代碼
全部資料51hei下載地址:
智能家居傳感器及藍牙程序.rar
(351.63 KB, 下載次數: 585)
2018-4-20 16:05 上傳
點擊文件名下載附件
|