1.思维导图
2.使用PWM+ADC光敏电阻完成光控灯的实验
int adc_val=0;//用于保存ADC采样得到的数值
float volt=0;//用于保存电压值
int main(void)
{
MX_GPIO_Init();
MX_DMA_Init();
MX_TIM1_Init();
MX_USART1_UART_Init();
MX_ADC_Init();
MX_TIM3_Init();
HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_3);//打开定时器通道3
int i=0;
while (1)
{
//开启ADC采样
HAL_ADC_Start(&hadc);
//获取ADC采样的值
adc_val=HAL_ADC_GetValue(&hadc);
//将采样值转换为电压值
volt=adc_val/4095.0f*3.3f;
//通过电压改变LED灯的亮度,光照越强,电压越低,则LED灯越暗;
//反之,光照越弱,电压越高,则LED灯越亮
i= volt/3.3f * 999;
TIM3->CCR3 = i;
}
}