以STM32F403为控制核心,设计一种基于STM32的智能照明控制系统,使用光敏电阻作为光照信息来源,使用GP2D12作为人物信息来源,当光照强度改变时,光敏电阻的阻值改变,从而改变STM32的采样电压。当人物移动时,红外传感器的电压改变从而改变采样电压。当光照强度小于一定值,且感应到有人时,LED亮。
通过光敏电阻和GP2D12传感器获取光照和红外信息,作为模拟量,传入STM32F4的采集端口。STM32F4进行模数转换后,在LCD1602上进行显示。
采用了HAL库进行配置STM32F4,一直有个问题就是proteus仿真DS18B20和DHT11这种带有时序要求的传感器,同STM32通信时出现时序错误,有经验的师兄可以告知一下怎么操作。
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 peoplern");
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
}
else // 表示 有人
{
printf("people herern");
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);
}
}
}
}
}
当感应到人的时候
上一篇:STM32控制4个LED灯循环点亮源程序
下一篇:基于stm32f103ze+mpu9250通过官方DMP库串口输出角度
推荐阅读最新更新时间:2024-11-17 16:29
设计资源 培训 开发板 精华推荐
- 使用 Diodes Incorporated 的 PI3HDMI1210-A 的参考设计
- 合集1:RGB氛围灯主板
- 使用 Analog Devices 的 LT3467AIS6 的参考设计
- ST25RU3993读取器IC评估板
- LTC3649EFE 24V 至 5Vout 突发模式降压稳压器的典型应用电路
- ADR390ART-REEL 具有关断功能的精密低漂移 2.048 V 负参考电压的典型应用
- DC2531A,使用 LTC2986 温度传感器的演示板,主板 (DC2508) + 20 输入分线板 (DC2210),需要。 DC2026
- B4860QDS: QorIQ® Qonverge开发系统
- RTL8367S网管交换机-VLAN低成本
- RD-530,将 FSL116HR 电源开关用于辅助电源应用的参考设计