Skip to content

ADC light res

1. 硬件连接

如下图 R17 这个器件就是光敏电阻,它的阻值会随光线的亮度而变化, alt text

2. CubeMX生成代码

如下图,将ADC配置为IN3 作为输入 alt text

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. 后记

想到很早的时候相机也有专门测量亮度的设备,也许可以使用光敏电阻制作