(ESP32学习2)ADC与DAC的使用

ESP32有两个ADC,每个ADC有多个通道,同一时间每个ADC只能采集一个通道

ADC输出关键字:

Serial.println(analogRead(35));  //analogRead(35)获取指定IO口的模拟电压数据(该方法将阻塞直到采集完成);数据范围为0~2^12-1,即0~4095.

ESP32 DAC有两个脚:25 26

DAC输出关键字:

dacWrite(25, 100);  //25,26 就是两个DAC引脚,后面的值取值范围时0-255,具体输出电压是  200/255*电源电压,200就是你填入的值

如果你的ADC采集有一些精度要求,我在网上找了一些可以调整的函数,完整代码在这里

void setup() {
  //关于串口后面还会,专门拿一篇博文来讲,因为有点多
  Serial.begin(115200);   //初始化调试串口,之后可以使用Ardunio ide 自带的串口调试,也可以自己用别的串口调试软件调试,波特率对上就行了
}

void loop() {
  float adc_get;
  Serial.println(analogRead(35));  //analogRead(35)获取指定IO口的模拟电压数据(该方法将阻塞直到采集完成);数据范围为0~2^12-1,即0~4095.
  Serial.println(adc_get);
  dacWrite(25, 100);  //25,26 就是两个DAC引脚,后面的值取值范围时0-255,具体输出电压是  200/255*电源电压,200就是你填入的值
  delay(1000);

/**************************************************************************************************************************************/
/*********************************************     调整精度用的一些函数     ************************************************************/
/**************************************************************************************************************************************/
  //以下是我在网上找到的ADC的资料,如果简单使用就直接用下面的关键字读取,如果精度有一些要求就用下面注释的一些函数设置
  //void analogReadResolution(uint8_t bits)  设置模拟数据读取分辨率,取值1~16,默认为12;
  //oid analogSetWidth(uint8_t bits)  设置ADC采样分辨率,取值9~12,默认为12;
  //void analogSetCycles(uint8_t cycles)  设置单次采样的周期,取值1~255,默认为8;
  //void analogSetSamples(uint8_t samples)设置单次采样的实际采样次数,取值1~255,默认为1;该项的设置相当于提高了ADC的灵敏度,比如该值为2,则采样获得数据就是真实数据的2倍;
  //void analogSetClockDiv(uint8_t clockDiv)设置ADC时钟分频系数,取值1~255,默认为1;
  
  //下面是设置ADC全局输入衰减,取值ADC_0db, ADC_2_5db, ADC_6db, ADC_11db,默认为11db;  当 VDD_A 为 3.3V 时:  0dB 下量程最大为 1.1V  2.5dB 下量程最大为 1.5V  6dB 下量程最大为 2.2V  11dB 下量程最大为 3.9V(最大可以采集到3.3V电压)
  //void analogSetAttenuation(adc_attenuation_t attenuation)  

  //void analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation)  设置单独某个IO口的输入衰减;
  //int hallRead()Get value for HALL sensor (without LNA) connected to pins 36(SVP) and 39(SVN);(关于霍尔传感器)

  //下面几个是非阻塞采样 相关函数
  //bool adcAttachPin(uint8_t pin)将IO口连接到ADC;
  //bool adcStart(uint8_t pin)开启采样与转换;
  //bool adcBusy(uint8_t pin)检查采样与转换是否完成;
  //uint16_t adcEnd(uint8_t pin)读取采集到的数据(如果未完成将阻塞至完成);
}

最后

STM32 HAL库的教程还在更新当中但是现在每篇博文要做的都挺多的,所以会更得慢一点,但我会一直更下去的,初步更完ESP32与stm32大概率更一些树莓派,k210的教程,这这个系列教程是用ESP32连接WIFI 方式与阿里云端交互,而后面会教大家用NB-IOT,用PYTHON(树莓派这种可以直接安装包直接用)的方式与阿里云交互,最后会更算法与视觉类教程,那部分边学变更,我是个大三的学生,自学物联网2年多了,我会带着兴趣一直写下去,至少我以后看到这些博文,我觉得自己曾经学过一些东西。由于我很少碰硬件,所以硬件小白一定要注意一下,因为我会找时间从基本0基础开始边学边更一些硬件基础,PCB绘制。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值