esp32 ADC数据采集(光敏电阻)

1、关于光敏电阻的原理介绍等信息就不一一介绍了,先上具体原理图

 

                                 

硬件连接,采用的是esp32s 的IO34号引脚,也就是ADC1_CH6(GPIO34)

2、程序源码

#include <stdio.h>
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "esp_wifi.h"
#include "esp_event_loop.h"
#include "esp_log.h"
#include "esp_err.h"
#include "nvs_flash.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/ledc.h"
#include <stdio.h>
#include "driver/uart.h"
#include "driver/gpio.h"
#include <driver/adc.h>
#include "string.h"

//光敏电阻ADC初始化
void adc_Init()
{
  adc1_config_width(ADC_WIDTH_12Bit); //设置为12位的ADC 2^12=4096
  adc1_config_channel_atten(ADC1_CHANNEL_6 ,ADC_ATTEN_0db);
  //设置ADC1通道6,参考电压为1.1V
}

void app_main()
{
    int read_raw; //ADC值

    adc_Init();  //ADC初始化

    while(1)
    {
      read_raw=adc1_get_voltage(ADC1_CHANNEL_6 ); //采集ADC1 6通道的ADC值
      printf("adc=%d,%dmv\r\n",read_raw, (read_raw*1100)/4096); //ADC值以及mV计算
      vTaskDelay(10);
    }
}


      注意!!在使用过程中发现一个问题,就是当使用esp32s的wifi通信时,发现不能使用ADC2引脚,当使用wifi时,无法从ADC2 GPIO获取相关数据值,所以应该使用ADC1 GPIO的管脚

      ADC输入通道具有12位的ADC分辨率,所以他的模拟数据为0到4095,假如我们设置参考电压为1.1V,也就是说模拟数据0对于0V,4095对应1.1V;同理,如果设置参考电压为3.3V,则模拟数据0对应0V,4095对应3.3V

 具体介绍可以参考我的另外一篇博客:https://blog.csdn.net/weixin_41583631/article/details/108105059

                         

  • 6
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值