arduino 使用 analogRead 读取不到数据,digitalRead 却可以正常读取
项目场景:
最近在使用安信可的 ESP32S P14 引脚(ADC 16)读取一个电路状态的时候遇到一个问题,电路状态不是很稳定,在高电平的时候,会突然出现毫秒级的波动,出现短暂的低电平,造成设备状态翻转,但是波动最低电压也不会到0,于是我想到使用 analogRead() 读取模拟量,替代 digitalRead() 的数据量。
可是 analogRead() 读出来的数据却是 0 ,digitalRead() 和 万用表都显示引脚电压却是没有问题。这就非常奇怪了
问题描述:
我先抽象了一个简单的 digitalRead() 和 analogRead() 读取模型,发现 P14 引脚(ADC 16)是可以进行模拟量和数据量的读取的,analogRead() 读取模拟量甚至可以不初始化为 INPUT 模式也可以读取,说明,这个引脚确实是 ADC 引脚。
可是这就没什么代码和流程,我整个复制到我应用的代码里面去获取模拟量,依然读取不到数据。
void setup() {
Serial.begin(115200);
pinMode(water_pin, OUTPUT);
pinMode(sign_pin, INPUT);
pinMode(monitor_pin,INPUT);
}
void loop() {
// printf("\n digitalRead == : %d!!!!!\r\n", digitalRead(sign_pin));
Serial.println();
printf("\n analogRead == : %d!!!!!\r\n", analogRead(sign_pin)); // 读取没问题
Serial.println();
delay(100);
}

原因分析:
我在引用代码加打印的时候发现,在初始化引脚的时候确实是可以读取模拟量的,可是启动 WiFi 模块之后就读取不到了,我怀疑 arduino 在初始化 WiFi 的时候会把部分 ADC 引脚初始为 数字量模式,我测试了一下 P14(ADC16) 和 P27(ADC17) 都有这个问题,但是 SVP(ADC0) 没问题。这大概是这个初始化流程移植 arduino 上的时候保留了 UNO板子的特性(0-5 为模拟量)
void setup() {
Serial.begin(115200);
pinMode(water_pin, OUTPUT);
pinMode(sign_pin, INPUT);
pinMode(monitor_pin,INPUT);
printf("\n analogRead111 == : %d!!!!!\r\n", analogRead(sign_pin)); // 这时候是可以读取模拟量的
// 启动 WiFi 并且连接网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
printf("\n analogRead222 == : %d!!!!!\r\n", analogRead(sign_pin)); // 到这儿的时候就不能读取模拟量了
// 获取并打印 IP 地址
Serial.println("");
Serial.println("WiFi connected");
Serial.print("'ip :");
Serial.print(WiFi.localIP());
Serial.println("' to connect");
}
void loop() {
printf("\n digitalRead == : %d!!!!!\r\n", digitalRead(sign_pin));
Serial.println();
printf("\n analogRead == : %d!!!!!\r\n", analogRead(sign_pin));
Serial.println();
delay(100);
}
解决方案:
修改硬件,将P14引脚修改为SVP引脚就行了
arduino 使用 analogRead 读取不到数据,digitalRead 却可以正常读取的更多相关文章
- python3 读取表格的数据
python3 读取表格的数据 xlrd1.1.0的下载网址:https://pypi.python.org/pypi/xlrd. xlrd1.1.0兼容python2和python3. python ...
- nodeks —— fs模块 —— 从流中 读取和写入数据
Fs流读取和写入数据 使用文件流来读取大文件不会卡顿 1, 从流中读取数据 var fs = require("fs"); var data = ''; var count = 0 ...
- excel to datatable (c#用NPOI将excel文件内容读取到datatable数据表中)
将excel文件内容读取到datatable数据表中,支持97-2003和2007两种版本的excel 1.第一种是根据excel文件路径读取excel并返回datatable /// <sum ...
- 解剖SQLSERVER 第五篇 OrcaMDF里读取Bits类型数据(译)
解剖SQLSERVER 第五篇 OrcaMDF里读取Bits类型数据(译) http://improve.dk/reading-bits-in-orcamdf/ Bits类型的存储跟SQLSERVE ...
- Java读取Execl表格数据
在前面提到用java代码新建一个Execl 表格并添加数据到表格中, 这次写了一个读取Execl表格数据并添加导数据库中的案列 给定对方一个Execl模板表格,如果导入的Execl表格和预订的表格不相 ...
- 上传读取Excel文件数据
/// <summary> /// 上传读取Excel文件数据 /// 来自http://www.cnblogs.com/cielwater /// </summary> // ...
- JAVA TcpServer端使用Scanner读取不到数据的解决办法
在使用JAVA进行Socket通信时,在Server端使用Scanner的nextLine()方法读取数据时,一直读取不到数据是因为Scanner是一个扫描器,它扫描数据都是去内存中一块缓冲区中进行扫 ...
- HR数据抽取:通过 Read Master Data 转换规则读取时间相关主属性数据
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 我写的一个ExcelHelper通用类,可用于读取或生成数据
读取或生成EXCEL数据的方法有很多,一般常见的有: 1.通过OFFICE EXCEL组件,优点:读取与生成EXCEL文件方便,缺点:服务器上必须安装OFFICE软件,且进程无法及时释放 2.通过第三 ...
随机推荐
- String与基本类型,字符数组,字节数组的转换
String与基本数据类型 * 基本数据 --->字符串(String) * 1.基本数据类型值 +"" --->最简单 * 2.使用包装类中的toString(参数类 ...
- mac下secureCRT的使用技巧
1.设置secureCRT不掉线的方法 Options->Global Options->General->Default Session->Edit Default Sett ...
- js设计模式之发布订阅模式
1. 定义 发布-订阅模式其实是一种对象间一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都将得到状态改变的通知. 订阅者(Subscriber)把自己想订阅的事件注册(Subscri ...
- Java基础系列(15)- 用户交互Scanner
Scanner对象 之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入.java.util.Scanner是Java5的新特征.我们可以 ...
- Linux系列(30) - rpm命令管理之安装命令(2)
包全名与包名 包全名:操作的包是没有安装的软件包时,使用包全名,而且注意路径.如:/mnt/cdrom/Packags/zlib-devel-1.2.3.-27.e16.i686.rpm 包名:操作已 ...
- P6640-[BJOI2020]封印【SAM,二分】
正题 题目链接:https://www.luogu.com.cn/problem/P6640 题目大意 给出两个字符串\(s,t\).\(q\)次给出\(l,r\)询问\(s_{l\sim r}\)与 ...
- 技术与艺术的结合,HMS Core让手机主题趣味丛生
在9月23日晚举办的华为nova9系列新品发布会上,华为在发布nova9系列新机之外,还为观众展示了多款Harmony OS趣味主题.其中一款名为"翻滚吧牛奶"的应用主题看起来十分 ...
- SpringBoot 简易实现热搜邮件推送,妈妈再也不用担心我不了解国家大事了
1.前言 上班的时候,无聊的时候,偶尔跑去百度看下热搜,所以就萌生出这种想法,通过邮件推送的方式实现效果,首先找到百度热搜的页面 热搜,话不多说,直接开干. 2.环境准备 因为是个SpringBoot ...
- Python代码阅读(第12篇):初始化二维数组
Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的代码实现了二维数组的初始化功能,根据给定的宽高初始化二维数组. 本篇阅读的代码片段来自于30-seconds-o ...
- DL4J实战之二:鸢尾花分类
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...