STM32F103C8T6 光敏传感器控制LED灯代码示例

本代码示例展示了如何使用STM32F103C8T6微控制器控制光敏传感器和LED灯,实现当光照强度低于设定值时自动开启LED灯,当光照强度恢复正常时自动关闭LED灯。

**注意:**由于没有具体的光敏传感器和LED灯型号,以下代码仅供参考,需根据实际硬件进行修改。

#include "stm32f10x.h"

#define LED_PIN GPIO_Pin_13
#define LED_GPIO GPIOC
#define PHOTO_PIN GPIO_Pin_0
#define PHOTO_GPIO GPIOA
#define PHOTO_ADC ADC1

int main(void)
{
  GPIO_InitTypeDef gpio_init;
  ADC_InitTypeDef adc_init;
  uint16_t photo_value = 0;
  uint8_t led_on = 0;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_ADC1, ENABLE);
  RCC_ADCCLKConfig(RCC_PCLK2_Div6);

  gpio_init.GPIO_Mode = GPIO_Mode_AIN;
  gpio_init.GPIO_Pin = PHOTO_PIN;
  GPIO_Init(PHOTO_GPIO, &gpio_init);

  gpio_init.GPIO_Mode = GPIO_Mode_Out_PP;
  gpio_init.GPIO_Pin = LED_PIN;
  gpio_init.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(LED_GPIO, &gpio_init);

  adc_init.ADC_Mode = ADC_Mode_Independent;
  adc_init.ADC_ScanConvMode = DISABLE;
  adc_init.ADC_ContinuousConvMode = ENABLE;
  adc_init.ADC_NbrOfChannel = 1;
  adc_init.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
  ADC_Init(PHOTO_ADC, &adc_init);

  ADC_Cmd(PHOTO_ADC, ENABLE);
  ADC_ResetCalibration(PHOTO_ADC);
  while(ADC_GetResetCalibrationStatus(PHOTO_ADC));
  ADC_StartCalibration(PHOTO_ADC);
  while(ADC_GetCalibrationStatus(PHOTO_ADC));

  while(1)
  {
    ADC_SoftwareStartConvCmd(PHOTO_ADC, ENABLE);
    while(!ADC_GetFlagStatus(PHOTO_ADC, ADC_FLAG_EOC));
    photo_value = ADC_GetConversionValue(PHOTO_ADC);

    if(photo_value < 1000 && !led_on)
    {
      GPIO_SetBits(LED_GPIO, LED_PIN);
      led_on = 1;
    }
    else if(photo_value >= 1000 && led_on)
    {
      GPIO_ResetBits(LED_GPIO, LED_PIN);
      led_on = 0;
    }
  }
}

代码解释:

  1. 定义LED和光敏传感器的引脚和端口号。
  2. 初始化GPIO和ADC模块。
  3. 启动ADC模块和校准。
  4. 进入循环,读取光敏传感器的模拟电压值,并根据设定的阈值判断是否需要开启或关闭LED灯。
  5. 注意设置led_on变量,确保只在阈值范围内执行一次LED灯开启或关闭操作。

使用说明:

  1. 将光敏传感器连接到PHOTO_PIN引脚。
  2. 将LED连接到LED_PIN引脚。
  3. 修改代码中的阈值(1000)以适应实际应用需求。
  4. 编译并下载代码到STM32F103C8T6开发板。

注意事项:

  • 代码中的阈值是示例值,需要根据实际光敏传感器和LED灯的特性进行调整。
  • 代码仅供参考,实际应用需根据硬件配置和功能需求进行修改。
  • 请确保安全操作,避免因代码错误导致硬件损坏。
STM32F103C8T6 光敏传感器控制LED灯代码示例

原文地址: https://www.cveoy.top/t/topic/nDhB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录