ESP32 光敏电阻传感器

作者:追风剑情 发布于:2026-5-23 0:50 分类:物联网

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "driver/adc.h"

// 光敏电阻模块连接的 ADC 引脚
// ADC1 可用引脚:GPIO32, GPIO33, GPIO34, GPIO35, GPIO36, GPIO37, GPIO38, GPIO39
// 这里使用 GPIO34 作为示例,请将光敏模块的 AO 引脚连接到 GPIO34
#define LIGHT_SENSOR_PIN   ADC1_CHANNEL_6  // GPIO34 对应 ADC1_CHANNEL_6

static const char *TAG = "LIGHT_SENSOR";

void app_main(void)
{
    // 配置 ADC 宽度和衰减
    adc1_config_width(ADC_WIDTH_BIT_12);           // 12位分辨率,0-4095
    adc1_config_channel_atten(LIGHT_SENSOR_PIN, ADC_ATTEN_DB_11);  // 衰减 11dB,测量范围约 0-3.6V
    
    ESP_LOGI(TAG, "光敏电阻模块初始化完成");
    ESP_LOGI(TAG, "请将光敏模块的 AO 引脚连接到 GPIO34");
    
    while (1) {
        // 读取 ADC 值
        int adc_value = adc1_get_raw(LIGHT_SENSOR_PIN);
        
        // 计算电压值 (3.3V 参考电压)
        // 根据比例公式: voltage/max_voltage = adc_value/max_adc_value
        float voltage = (adc_value * 3.3) / 4095.0;
        
        // 计算光线强度百分比 (0 = 最暗, 100 = 最亮)
        int light_percent = (adc_value * 100) / 4095;
        
        // 打印结果
        ESP_LOGI(TAG, "ADC: %4d | 电压: %.2fV | 亮度: %3d%%", 
                 adc_value, voltage, light_percent);
        
        // 每 500ms 读取一次
        vTaskDelay(500 / portTICK_PERIOD_MS);
    }
}

标签: IoT

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号