C++ Arduino Nano-为什么我的针会这样?

C++ Arduino Nano-为什么我的针会这样?,c++,arduino,physics,C++,Arduino,Physics,我有一个测量辐射的设备,使用一个Elegoo Uno(仿冒Arduino品牌)和Aware Electronics的RM-60辐射监测器。在我的大学里,作为高空气球有效载荷项目的一部分,我已经让它工作了将近一年半。我目前正在重新访问它,因为现在我想了解并清理我的代码 设置如下所示: RM-60有四根电线。黄色和黑色接地,红色接我的5v,绿色接我的输出(更多文档可以在网上找到) 我有一个pin连接到digital 2。我在网上读到,引脚2和3可以为Uno使用attachInterrputs。但不管

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

设置如下所示: RM-60有四根电线。黄色和黑色接地,红色接我的5v,绿色接我的输出(更多文档可以在网上找到)

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

这就是我所困惑的。我觉得在了解了这些输入是如何工作的之后,我做得很好。但它不起作用。那么,为什么当我的pin设置为8时,设备运行正常?如果我做错了(或效率低下),你能给我哪些关于如何优化/修复的提示或指针

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

//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,得出每分钟的计数读数。

在使用任何功能之前,请参阅手册。手册明确指出,您的方法不起作用

从Arduino参考手册:

连接中断(数字插针中断(pin)、ISR、模式)
(推荐)

连接中断(中断、ISR、模式)
(不推荐)

连接中断(pin、ISR、模式)
(不推荐使用。此外 语法仅适用于Arduino SAMD板、Uno WiFi Rev2、Due和 101.)

示例代码

const byte ledPin = 13;
const byte interruptPin = 2;
volatile byte state = LOW;

void setup() {
  pinMode(ledPin, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(interruptPin), blink, CHANGE);
}

void loop() {
  digitalWrite(ledPin, state);
}

void blink() {
  state = !state;
}

连接中断(数字插针中断(2)、测试、上升)谢谢!我以前试过这种方法,但一定是忘了一句话什么的。但是,对于我问题的第二部分,为什么我以前的代码和设计是有效的?因为我认为除非中断连接到正确的pin,否则它就不会工作。但当我的pin设置为8时,读数正好。为什么会这样?