|
以STM32F403為控制核心,設計一種基于STM32的智能照明控制系統(tǒng),使用光敏電阻作為光照信息來源,使用GP2D12作為人物信息來源,當光照強度改變時,光敏電阻的阻值改變,從而改變STM32的采樣電壓。當人物移動時,紅外傳感器的電壓改變從而改變采樣電壓。當光照強度小于一定值,且感應到有人時,LED亮。
通過光敏電阻和GP2D12傳感器獲取光照和紅外信息,作為模擬量,傳入STM32F4的采集端口。STM32F4進行模數(shù)轉(zhuǎn)換后,在LCD1602上進行顯示。
采用了HAL庫進行配置STM32F4,一直有個問題就是proteus仿真DS18B20和DHT11這種帶有時序要求的傳感器,同STM32通信時出現(xiàn)時序錯誤,有經(jīng)驗的師兄可以告知一下怎么操作。
- int main(void)
- {
- uint16_t time=0;
- HAL_Init();
- SystemClock_Config();
- MX_GPIO_Init();
- MX_ADC1_Init();
- MX_USART1_UART_Init();
- while (1)
- {
- Get_Adc();
-
- if(adc1_in1_voltage<0.5) // 表示 沒人
- {
- printf("no people\r\n");
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
- }
- else // 表示 有人
- {
- printf("people here\r\n");
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 0);
- if(adc1_in0_voltage<1)
- {
- for(time=0; time<5; time++)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_Delay(100);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
- HAL_Delay(900);
- }
- }
- else if(adc1_in0_voltage>=1 && adc1_in0_voltage<2)
- {
- for(time=0; time<5; time++)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_Delay(500);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
- HAL_Delay(500);
- }
- }
- else if(adc1_in0_voltage>=2)
- {
- for(time=0; time<5; time++)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_Delay(900);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
- HAL_Delay(100);
- }
- }
- }
- }
- }
復制代碼
2020-07-12_161400.png (38.68 KB, 下載次數(shù): 72)
下載附件
當沒有感應到人的時候
2020-7-12 16:14 上傳
|
|