ADC light res
1. 硬件连接
如下图 R17 这个器件就是光敏电阻,它的阻值会随光线的亮度而变化,
2. CubeMX生成代码
如下图,将ADC配置为IN3 作为输入
3. 编写代码
串口重定向 将串口的代码重新使用了printf来输出,
C
#include <stdio.h>
//重定向c库函数printf到串口USARTx,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
/* 发送一个字节数据到串口USARTx */
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
return (ch);
}
采集ADC的值,就可以得到不同亮度变化的值。
C
/* USER CODE BEGIN 2 */
uint16_t ADC1_number = 0;
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1,HAL_MAX_DELAY);
ADC1_number = (uint16_t)HAL_ADC_GetValue(&hadc1);
printf("adc1: %d\r\n",ADC1_number);
HAL_Delay(100);
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
4. 后记
想到很早的时候相机也有专门测量亮度的设备,也许可以使用光敏电阻制作