C++ Arduino Nano-为什么我的针会这样?
我有一个测量辐射的设备,使用一个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布局和程序,我没有成功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。但不管
//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时,读数正好。为什么会这样?