如何检测Adafruit nrf52840上的按钮按下

问题描述

我正在使用Feather Express nrf52840,并试图利用预先提供的用户按钮。读取引脚说明:https://learn.adafruit.com/introducing-the-adafruit-nrf52840-feather/pinouts它说

提供了一个可在您的项目中使用的触觉开关,该触觉开关已连接到P1.02,并且可以在代码中以Arduino中的D7和CircuitPython中的SWITCH进行访问。

我从此处使用示例代码https://learn.adafruit.com/make-it-switch/debouncing来读取按钮状态的变化。

我遇到的问题是,当我在原始代码中使用D7而不是A1时,代码将无法编译。我得到的错误是:

sketch_nov04a:1:23: error: 'D7' was not declared in this scope; did you mean 'A7'?
    1 | const int buttonPin = D7;   // the number of the pushbutton pin
      |                       ^~
      |                       A7
exit status 1
'D7' was not declared in this scope; did you mean 'A7'?

我考虑使用A7认为错误消息可能是正确的,但是已经使用了读取引脚AREF(A7 / P0.31)的信息。

我想念什么?

const int buttonPin = D7;   // the number of the pushbutton pin
int buttonState;             // the current reading from the input pin
int lastButtonState = HIGH;  // the prevIoUs reading from the input pin

void setup() {
  // put your setup code here,to run once:
  Serial.begin(115200);
  delay(100);
  pinMode(buttonPin,INPUT_PULLUP);
}

void loop() {

  int reading = digitalRead(buttonPin);

  if (reading != lastButtonState) {
    Serial.println("I ATE THE PIE!!");
  }

}

解决方法

尝试:

const int buttonPin = 7;

可能有一些宏定义了A0等,但是据我所知,D0等都没有。对于那些您只使用数字的人。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...