arduino - Arduino - 模拟读取返回 MAX 值
问题描述
介绍
大家好。我正在尝试开始我的第一次微控制器体验。我喜欢音乐,所以我从 arduino 的SparkFun Spectrum Shield开始。
硬件
- SparkFun Spectrum Shield(使用两个 MSGEQ7 音频芯片)
- ELEGOO UNO R3
软件
我用这段代码刷新了我的arduino https://github.com/sparkfun/Spectrum_Shield/blob/master/Firmware/SparkFun_Spectrum_Demo/SparkFun_Spectrum_Demo.ino 我只添加了一个函数来调试 Frequencies_One 和 Frequencies_Two 值:
void Debug_Frequencies(){
Serial.print("{\"Left\":[");
for(int i= 0; i<7; i++)
{
Serial.print(Frequencies_One[i]);
if(i<6){
Serial.print(",");
}
}
Serial.print("],\"Right\":[");
for(int i= 0; i<7; i++)
{
Serial.print(Frequencies_Two[i]);
if(i<6){
Serial.print(",");
}
}
Serial.print("]");
Serial.print(",\"millSecSinceOn\":");
Serial.print(millis());
Serial.println("}");
}
错误
我在 Arduino IDE 串行监视器中得到以下输出:
15:50:06.080 -> {"Left":[1023,1023,1023,1023,1023,1020,60],"Right":[1023,1023,1023,1023,1023,1023,70],"millSecSinceOn":6599}
15:50:06.536 -> {"Left":[1023,1023,1022,1023,1023,1022,63],"Right":[1023,1023,1023,1022,1023,1023,71],"millSecSinceOn":7025}
15:50:06.949 -> {"Left":[1023,1023,1022,1023,1023,1020,62],"Right":[1023,1023,1023,1023,1023,1023,77],"millSecSinceOn":7451}
15:50:07.370 -> {"Left":[1023,1021,1021,1023,1023,1023,66],"Right":[1023,1023,1023,1023,1023,1023,76],"millSecSinceOn":7877}
制造商代码使用的arduino函数analogRead可以将0-1023作为int值返回。所以analogRead 方法现在每次都返回MAX 值,即使没有音乐输入。
我的分析
我的第一个想法是,在 5V 输入和模拟读取引脚之间的任何地方都必须有一个旁路,但我无法检测到任何(用万用表检查)。在我的板上有一个 2.53k-2.59k 欧姆电阻,当板离线时,arduino 板针 5V 和 A0(和 A1)之间。A0/A1 和地之间还有一个 4.36k 欧姆电阻。
解决方案
模拟引脚从空气中的静电荷随机读取,为了克服这个问题,我们应该在模拟引脚和地之间使用下拉电阻,
建议使用“10k 欧姆电阻”
推荐阅读
- winapi - DllMain 在 rust 中的正确签名是什么?
- c - 在目录中搜索文件的更简单的解决方案
- firebase - 如何将我的 Flutter 应用程序连接到 firebase 云功能发送的通知?
- c# - RestClient 在下载文件过程中关闭设备时冻结
- python - 在 Python 上解析 EpicGames Store 的问题
- python - 无法在异步功能测试中引发错误
- java - Kotlin: How to map a field from list to a new list and group it
- reactjs - cellRendererParams 组件在第二个组件挂载后未收到道具
- arduino - 连接arduino bord时,树莓派是否显示串口地址
- swiftui - UIHostingController 是否必须在视图控制器层次结构中?