ESP32-C3实现ADC

news2024/10/10 3:20:13

思路

  1. 定义 ADC 管脚和 UART 参数。
  2. 初始化 ADC 和 UART。
  3. 在循环中读取 ADC 值,将其转换为电压,并通过 UART 输出。

扩展知识

analogSetAttenuation() 函数是ESP32特有的一个函数,用于设置模拟输入引脚的衰减级别。这个函数影响ADC(模数转换器)如何读取外部电压。

衰减级别决定了输入电压范围,这是因为在没有衰减的情况下,ESP32的ADC只能正确读取0到1.1V之间的电压。通过增加衰减,可以扩展这个范围,以便测量更高的电压。

参数ADC_11db是衰减级别的枚举值之一,以下是可用的衰减级别及其对应的电压范围:

  • ADC_0db: 无衰减,输入电压范围是0 - 1.1V
  • ADC_2_5db: 2.5dB衰减,输入电压范围是0 - ~1.5V
  • ADC_6db: 6dB衰减,输入电压范围是0 - ~2.2V
  • ADC_11db: 11dB衰减,输入电压范围是0 - 3.3V

当选择ADC_11db时,你就可以测量0到3.3V之间的电压,这对于使用3.3V电源的ESP32系统来说是非常有用的。

这里是如何使用analogSetAttenuation()函数的示例:

analogSetAttenuation(ADC_11db); // 设置衰减为11dB,允许测量0-3.3V的电压

完整实例

#define ADC_PIN 2  // 定义一个 GPIO 管脚作为 ADC 输入

// ADC 参数
#define ADC_ATTENUATION ADC_11db  // 设置 ADC 衰减,适用于 0 - 3.3V 的输入范围
#define ADC_RESOLUTION 12         // 设置 ADC 分辨率,ESP32-C3 支持最高 12 位
#define V_REF 3.3                 // 参考电压

void setup() {
  Serial.begin(115200);  // 初始化串口通信,波特率 115200
  analogSetAttenuation(ADC_ATTENUATION);  // 设置 ADC 衰减
  analogReadResolution(ADC_RESOLUTION);    // 设置 ADC 分辨率
}

void loop() {
  // 读取 ADC 值
  int adcValue = analogRead(ADC_PIN);
  
  // 将 ADC 值转换为电压
  float voltage = (float)adcValue * V_REF / (1 << ADC_RESOLUTION);
  
  // 通过 UART 输出电压值
  Serial.print("Voltage: ");
  Serial.print(voltage, 2);  // 输出电压值,保留两位小数
  Serial.println(" V");
  
  // 等待一段时间再次读取
  delay(1000);
}

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

虚拟机没有网络怎么解决

CentOS7为例 进入虚拟网络编辑器 1.更改设置 2.选中NAT模式点击3点击移除网络 4添加网络&#xff0c;随便选一个 5.点开NAT设置&#xff0c;记住网关 6.DHCP设置&#xff0c;注意虚拟机设置ip必须在起始ip和结束ip范围内 进入虚拟机网络适配器&#xff0c;自定义选中第4步操作…

Tailwind Css的使用

1.Tailwind Css是什么 官网解释&#xff1a;Tailwind CSS 的工作原理是扫描所有 HTML 文件、JavaScript 组件以及任何 模板中的 CSS 类&#xff08;class&#xff09;名&#xff0c;然后生成相应的样式代码并写入 到一个静态 CSS 文件中。 我的理解是利用Tailwind CSS 提供的…

Element-快速入门

什么是 Element 在现代前端开发中&#xff0c;组件化的思想日益盛行&#xff0c;Element组件库作为一款流行的UI组件库&#xff0c;特别适用于基于Vue.js的项目&#xff0c;它为开发者提供了丰富的组件和良好的开发体验。 想要使用Element的组件库&#xff0c;我们需要完成下面…

基于opencv的人脸闭眼识别疲劳监测

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有&#xff1a;中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等&#xff0c;曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝&#xff0c;拥有2篇国家级人工智能发明专利。 社区特色…

基于函数计算FC 部署 ComfyUI实现AI生图 的优势

基于函数计算FC 部署 ComfyUI实现AI生图 的优势 部署ComfyUI实现AI生图使用函数计算FC 一键部署ComfyUI 绘画平台的优势有哪些&#xff1f; 在文章开始之前&#xff0c;先来看一下基于函数计算FC 部署 ComfyUI实现AI生图 的大概步骤&#xff0c;整个基础部署操作比较简单。即便…

《Programming from the Ground Up》阅读笔记:p181-p216

《Programming from the Ground Up》学习第10天&#xff0c;p181-p216总结&#xff0c;总计34页。 一、技术总结 第10章主要讲计算机是如何计算的&#xff0c;如十进制、二进制、八进制、十六进制以及浮点数和负数的表示。属于比较基础的内容&#xff0c;如果有一定基础&…

ai免费写论文是原创吗?分享5款ai写作免费一键生成助手

在当今的学术研究和写作领域&#xff0c;AI技术的应用越来越广泛&#xff0c;尤其是在论文写作方面。许多AI写作工具声称能够一键生成高质量的论文&#xff0c;并且保证原创性。然而&#xff0c;这些工具是否真的能生成完全原创的论文&#xff0c;仍然是一个值得探讨的问题。 …

【函数】4.函数的单调性

本节课没有笔记示例&#xff0c;自己做好笔记&#xff01; 复合函数的单调性 最值 没讲 提醒我

【引领未来办公新风尚 —— 搭贝臻选,您的全能企业管理神器】

在这个瞬息万变的商业时代&#xff0c;每一分效率的提升都可能是超越竞争的关键。搭贝低代码平台匠心打造的“搭贝臻选”应用&#xff0c;集CRM营销管理、销售管理、采购管理、库存管理、财务管理、工单管理、人事管理及办公OA于一体&#xff0c;全方位赋能您的企业&#xff0c…

单片机闪存,闪存缓冲取,闪存延迟

一、启用闪存预取缓冲区&#xff08;FLASH_PrefetchBufferCmd (FLASH_PrefetchBuffer_Enable);&#xff09; 闪存预取缓冲区的作用&#xff1a; 在微控制器中&#xff0c;闪存是用于存储程序代码和常量数据的非易失性存储器。当微控制器执行程序时&#xff0c;需要从闪存中读取…

响应速度相关知识

在讨论 Android 性能问题的时候&#xff0c;卡顿、响应速度、ANR 这三个性能相关的知识点通常会放到一起来讲&#xff0c;因为引起卡顿、响应慢、ANR 的原因类似&#xff0c;只不过根据重要程度&#xff0c;被人为分成了卡顿、响应慢、ANR 三种&#xff0c;所以我们可以定义广义…

加快rollback事务回滚速度

背景&#xff1a; 运行一个长事务会话SQL&#xff0c;取消运行或者kill会话&#xff0c;回滚时间较长的情况。 影响到其它业务运行&#xff0c;需要尽快回滚的场景。 1.可以通过kill会话对应的操作系统进程&#xff0c;能够使用到并行恢复&#xff0c;会加快回滚速度。&…

汽车宣传动画渲染怎么做?云渲染加速汽车动画渲染

在汽车行业&#xff0c;宣传动画已成为展示新车型和技术创新的重要工具。高质量的渲染不仅能够吸引观众的眼球&#xff0c;还能有效传达汽车的性能和美学。随着技术的发展&#xff0c;云渲染技术为汽车宣传动画的渲染提供了新的可能性&#xff0c;大大提高了渲染效率和质量。 第…

一些零散的和编译相关的语法/flash-attn涉及语法扫盲

#pragma once&#xff1a;一个编译指令&#xff0c;用于防止头文件被多次包含。当编译器遇到#pragma once时&#xff0c;它会确保该头文件在一个编译单元&#xff08;一个.cpp文件及其包含的所有文件&#xff09;中只会被包含一次。即使该文件被间接包含多次&#xff0c;编译器…

JavaWeb的小结03

第2章-第3节 一、知识点 Cookie、Session、Filter过滤器、Listener。 二、目标 理解Cookie和Session的区别。 掌握Cookie和Session的基本用法。 理解Filter过滤器的作用。 三、内容分析 重点 理解Cookie和Session的区别。 掌握Cookie和Session的基本用法。 理解Filter过…

minio简单使用

文章目录 简介官方地址Linux下载安装安装服务启动关闭帮助命令 java开发minio依赖包新建项目pom配置文件配置类Service测试类运行测试 Api使用前言针对桶的操作查看某个桶是否存在创建一个桶返回桶列表删除一个桶 针对文件的操作上传文件到桶中(本地文件上传)上传文件到桶中(基…

(Linux驱动学习 - 9).设备树下platform的LED驱动

一.platform相关结构体与函数 1.匹配列表 - struct of_device_id struct of_device_id {char name[32];char type[32];/* compatible 很重要&#xff0c;需要与设备树节点的 compatible 属性一致&#xff0c;才能匹配 */char compatible[128]; const void *data; }; …

dfs 判重Sequence one——hdu 2610

目录 前言 搜索算法判重 map判重 set判重 Sequence one 问题描述 输入 输出 数据范围 样例 问题分析 重构dfs参数 递减&#xff0c;不重复 去重的优化 最终代码 前言 搜索算法判重 搜索算法判重有很多种方法&#xff0c;常见的有两种&#xff0c;map判重和set判重…

模运算和快速幂

文章目录 模运算快速幂 模运算 模运算是大数运算中的常用操作。如果一个数太大&#xff0c;无法直接输出&#xff0c;或者不需要直接输出&#xff0c;则可以对它取模&#xff0c;缩小数值再输出。取模可以防止溢出&#xff0c;这是常见的操作。 取模运算一般要求a和m的符号一…

VCI_VBDSP使用教程-服务站

VCI_VBDSP使用教程-服务站 VBDSP软件压缩包请点击下载&#xff1a;(备注&#xff1a;将VBDSP软件压缩包做一个下载连接&#xff0c;放到此处) 教程视频&#xff1a;https://www.bilibili.com/video/BV19eHpeeEiz/?spm_id_from333.999.0.0&vd_source224b4434f72960113bc97…