ESP32入门六(读取引脚的模拟信号[4]:Arduino-ESP32 ADC API详解)

在之前的章节中,我们测试了读取引脚的模拟值,ADC功能在实际中用途十分广泛,在本章中,我们把一些常用的ADC函数做一个详细的说明。

ADC单次性模式

ADC单次模式API与Arduino的analogRead功能完全兼容。当您调用analogRead或analogReadMillivots函数时,它会返回所请求引脚上的单个转换结果。

函数:analogRead

作用:用于获取指定引脚ADC原始值(未校准)

格式:uint16_t analogRead(uint8_t pin);

 参数:

        pin         -引脚编号

返回:ADC引脚原始值

函数:analogReadMillivolts

作用:此函数将返回以毫伏为单位的值(已校准)。

格式uint32_t analogReadMilliVolts(uint8_t pin);

参数:

        pin         -引脚编号

返回:以毫伏为单位的值

函数:analogReadResolution

作用:该函数用于设置analogRead返回值的分辨率。  对于除 ESP32S3 之外的所有芯片,默认值为 12 位(范围从 0 到 4095),ESP32S3 的默认值为 13 位(范围从 0 到 8191)。  当设置不同的分辨率时,读取的值将移动以匹配给定的分辨率。

格式:void analogReadResolution(uint8_t bits);

参数:

        bits         -设置模拟读取分辨率(9~13)

函数:analogSetAttenuation

作用:用于设置所有通道的衰减。输入电压可以在输入到 ADC 之前衰减。  有 4 种可用的衰减选项,衰减越高,可测量的输入电压就越高。

 每个芯片的可测量输入电压有所不同,详细信息请参见:ADC — Arduino-ESP32 2.0.14 documentation

格式:void analogSetAttenuation(adc_attenuation_t attenuation);

参数:

        attenuation         -设置衰减
                ADC_ATTEN_DB_0    100 mV ~ 950 mV
                ADC_ATTEN_DB_2_5    100 mV ~ 1250 mV
                ADC_ATTEN_DB_6    150 mV ~ 1750 mV
                ADC_ATTEN_DB_11    150 mV ~ 3100 mV

函数:analogSetPinAttenuation

作用:该函数用于设置特定引脚/ADC 通道的衰减。  更多信息,请参阅analogSetAttenuation。

格式:void analogSetPinAttenuation(uint8_t pin, adc_attenuation_t attenuation);

参数:

        pin                         -指定引脚进行衰减设置。

        attenuation            -设置衰减。

函数:analogSetWidth

作用:

该功能仅适用于ESP32芯片。用于设置硬件采样位和读取分辨率。  默认值为 12 位 (0 - 4095)。  范围为 9 - 12。

格式:void analogSetWidth(uint8_t bits);

参数:

        bits        -设置模拟读取宽度(9~12)

ADC 连续模式
ADC 连续模式是一种 API,用于在后台对多个引脚执行模拟转换,并在转换完成后接收回调以访问结果。通过该 API,您可以在一个周期内为每个引脚指定所需的转换次数以及相应的采样率。analogContinuousRead 函数的结果是一个 adc_continuous_data_t 结构数组。这些结构包含每个引脚的原始平均值和以毫伏为单位的平均值。

函数:analogContinuous

作用:用于配置选定的引脚阵列。

格式:bool analogContinuous(uint8_t pins[], size_t pins_count, uint32_t conversions_per_pin, uint32_t sampling_freq_hz, void (*userFunc)(void));

参数:

    pins[]                                         要设置的引脚阵列

    pins_count                                 阵列中的引脚数量

    conversions_per_pin                 设置每个引脚将在每个 ADC 周期运行的转换次数

    sampling_freq_hz sets               ADC 的采样频率(以 Hz 为单位)

    userFunc sets callback               转换完成后的回调函数(可以设置为 NULL)

返回:如果配置成功,返回 true。  如果返回 false,则发生错误或未配置 ADC 连续模式

函数:analogContinuousRead

作用:该函数用于将 ADC 连续数据读取到结果缓冲区。  结果缓冲区为 adc_continuos_data_t 数组。

typedef struct {
    uint8_t pin;                       /*!<ADC pin */
    uint8_t channel;               /*!<ADC channel */
    int avg_read_raw;            /*!<ADC average raw data */
    int avg_read_mvolts;       /*!<ADC average voltage in mV */
} adc_continuos_data_t;

格式:bool analogContinuousRead(adc_continuos_data_t ** buffer, uint32_t timeout_ms);

参数:

    buffer                          -以 adc_continuos_data_t 格式从 ADC 读取的转换结果缓冲区。

    timeout_ms                 -等待数据的时间(以毫秒为单位)。

返回:如果读取成功且缓冲区已充满数据,则该函数将返回 true。  如果返回 false,则读取失败,缓冲区设置为 NULL。

函数:analogContinuousStart

作用:该函数用于启动ADC连续转换。

格式:bool analogContinuousStart();

返回:如果 ADC 连续成功启动,该函数将返回 true。  如果返回 false,则启动失败。

函数:analogContinuousStop

作用:该函数用于停止ADC连续转换。

格式:bool analogContinuousStop();

返回:如果 ADC 连续转换成功停止,此函数将返回 true。  如果返回 false,则停止失败。

函数:analogContinuousDeinit

作用:该函数用于取消已经初始化 ADC 连续外设。

格式:bool analogContinuousDeinit();

返回:如果成功取消,返回 true。  如果返回 false,则取消初始化失败。

函数:analogContinuousSetAtten

作用:该函数用于设置ADC连续外设的衰减。  有关更多信息,请参阅analogSetAttenuation。

格式:void analogContinuousSetAtten(adc_attenuation_t attenuation);

 参数:

        attenuation         -设置衰减(默认为11db)

函数:analogContinuousSetWidth

作用:该函数用于设置硬件分辨率宽度。  所有芯片的默认值为 12 位 (0 - 4095)。该功能仅对 ESP32 芯片有效,因为它允许设置分辨率范围为 9-12 位。

格式:void analogContinuousSetWidth(uint8_t bits);

参数:

        bits         -设置宽度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314443.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——小细节和小知识7

一、逆序字符串 1、递归1 #include <stdio.h> #include <string.h>void ReverseArray(char *str) {char temp *str;//1int len (int)strlen(str);*str *(str len - 1);//2*(str len - 1) \0;//3if(strlen(str 1) > 2)//只要字符串还大于2&#xff0c;就…

【Spring实战】16 Profile

文章目录 1. 定义2. 使用2.1 定义 Profile2.2 激活 Profile 3. 演示3.1 properties文件3.2 打印日志3.3 启动服务&验证3.4 修改 active3.5 重启服务&验证 4. 应用场景4.1 数据库配置4.2 日志配置 5. 代码详细总结 Spring 框架提供了一种强大的机制&#xff0c;允许在不…

关于“Python”的核心知识点整理大全55

目录 注意 3. 模板 topic.html 4. 将显示所有主题的页面中的每个主题都设置为链接 topics.html 18.5 小结 第 19 章 用户账户 19.1 让用户能够输入数据 19.1.1 添加新主题 1. 用于添加主题的表单 forms.py 2. URL模式new_topic urls.py 3. 视图函数new_topic() …

51单片机中TCON, IE, PCON等寄存器的剖析

在单片机中&#xff0c;如何快速通过名字记忆IQ寄存器中每一个控制位的作用呢&#xff1f; IE&#xff08;interrupt enable&#xff09;寄存器中&#xff0c;都是中断的使能位置。 其中的EA&#xff08;enable all&#xff09;是总使能位&#xff0c;ES(enable serial)是串口…

excel统计分析——单因素方差分析

参考资料&#xff1a;生物统计学 方差分析是将总变异分解为组间变异的方差和组内变异的方差&#xff0c;并通过F检验推断处理效应是否显著的过程&#xff0c;而方差是通过平方和与自由度计算出来的&#xff0c;所以方差分析首先需要进行平方和与自由度的分解。具体步骤如下&…

简单FTP客户端软件开发——JavaFX开发FTP客户端

文章目录 导入外部包commons-net-3.10.0.jarJavaFX开发客户端 FTP客户端要求如下&#xff1a; 简单FTP客户端软件开发 网络环境中的一项基本应用就是将文件从一台计算机中复制到另一台可能相距很远的计算机中。而文件传送协议FTP是因特网上使用得最广泛的文件传送协议。FTP使用…

yolov5目标检测神经网络——损失函数计算原理

前面已经写了4篇关于yolov5的文章&#xff0c;链接如下&#xff1a; 1、基于libtorch的yolov5目标检测网络实现——COCO数据集json标签文件解析 2、基于libtorch的yolov5目标检测网络实现(2)——网络结构实现 3、基于libtorch的yolov5目标检测网络实现(3)——Kmeans聚类获取anc…

OpenCV-13绘制多边形和文本

一、画多边形 使用API polylines绘制多边形。 polylines&#xff08;img&#xff0c; pts&#xff0c; isClose&#xff0c; color&#xff0c; thickness&#xff0c; lineType&#xff0c; shift&#xff09; 其中&#xff1a; pts&#xff1a;表示多边形的点集&#xff…

nvm安装版本后设置默认镜像地址和nvm list available出现空白解决办法

如题 npm config get registry https://registry.npmjs.org/发现镜像地址依旧是默认的 解决 运行输入npm config list 查看这个选项对应的目录 修改为的内容如下 homehttps://npmmirror.com registryhttps://registry.npmmirror.com/或者也可以 homehttps://npmmirror.com…

008、所有权

所有权可以说是Rust中最为独特的一个功能了。正是所有权概念和相关工具的引入&#xff0c;Rust才能够在没有垃圾回收机制的前提下保障内存安全。 因此&#xff0c;正确地了解所有权概念及其在Rust中的实现方式&#xff0c;对于所有Rust开发者来讲都是十分重要的。在本文中&…

JavaScript 基础(一)

实验需新建一个 test.html 文件&#xff0c;用于编写代码。后续的例子中&#xff0c;将不再提醒建立文件&#xff0c;大家根据个人需求自行创建对应的 html 文件&#xff0c;并完成代码练习&#xff1a; 首先来看看范例代码&#xff1a; <!doctype html> <html>&…

Docker:部署若依前后端分离版

Docker&#xff1a;部署若依前后端分离版 1. 停止天翼云上的原来跑的若依项目2. 停止腾讯云上的若依项目3. 使用Docker部署3.1 天翼云数据库&Redis3.1.1 部署数据库3.1.2 部署Redis数据库3.1.1 部署Nginx(这里被天翼云坑了换的腾讯云运行nginx) 3.2 腾讯云部署后端&前端…