首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino Nano -为什么我的大头针会有这样的行为?

Arduino Nano -为什么我的大头针会有这样的行为?
EN

Stack Overflow用户
提问于 2019-07-11 12:56:56
回答 1查看 143关注 0票数 2

我有一个测量辐射的设备,使用的是Elegoo Uno (仿制的Arduino品牌)和Aware Electronics的RM-60辐射监测仪。在我的大学里,作为高空气球有效载荷项目的一部分,我已经让这个项目工作了将近一年半。我现在正在重新访问它,因为现在我想要理解和清理我的代码。

设置是这样的: RM-60有四根导线。黄色和黑色到地面,红色到我的5v,绿色到我的输出(更多文档可以在网上找到)。

我有一个引脚连接到数字2。我在网上读到引脚2和3可以使用attachInterrputs的Uno。但是无论出于什么原因,将我的pinMode()设置为2都不起作用。我发现,当我将引脚设置为8,并将我的实际线路连接到数字2时,我可以很好地阅读它。

这就是我感到困惑的地方。我觉得在了解了这些输入是如何工作的之后,我正在做正确的事情。但它不起作用。那么,当我的引脚设置为8时,为什么设备运行正常?如果我做错了(或者效率低下),你能给我一些关于如何优化/修复它的提示或建议吗?

我有我以前的代码,几乎是两年前编译和测试的。它按原样工作,但我就是不明白为什么。我在网上寻找过类似的项目,因为世界各地的几个气球团队都使用RM-60来测量辐射。按照他们的引脚布局和程序,我一直没有成功。

代码语言:javascript
复制
//this is taking just the necessary lines to run the geigercounter.
//using geigerPin 8, it works. But why not when I change this to 2, where my 
//wire actually is?

int count;
int geigerPin = 8; 
int testVar = 0;

void setup() {
  Serial.begin(9600);
  pinMode(geigerPin, OUTPUT);
  attachInterrupt(0, test, RISING);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.println(count * 6);
  count = 0;
  delay(10000);
}

void test() {
  count++;
}

数据每10秒读回一次串行监视器。返回的结果应该是超过10秒的计数,再乘以6,得到每分钟计数的读数。

EN

回答 1

Stack Overflow用户

发布于 2019-07-11 17:11:55

使用任何功能前,请参阅手册。手册清楚地说明了你的方法是行不通的。

来自Arduino参考手册:

attachInterrupt(digitalPinToInterrupt(pin), ISR, mode) (推荐)

attachInterrupt(interrupt, ISR, mode) (不推荐)

attachInterrupt(pin, ISR, mode) (不推荐。此外,此语法仅适用于Arduino SAMD板、Uno WiFi Rev2、Due和101。)

示例代码

常量字节ledPin = 13;常量字节状态= 2;易失性字节状态=低;无效设置(){ pinMode(ledPin,输出);pinMode( interruptPin,INPUT_PULLUP);attachInterrupt(digitalPinToInterrupt(interruptPin),闪烁,更改);}无效循环(){ digitalWrite(ledPin,状态);}无效闪烁(){状态=!状态;}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56981860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档