【问题标题】:Reading button inputs on arduino在arduino上读取按钮输入
【发布时间】:2017-08-05 22:52:54
【问题描述】:

我刚刚开始对 arduino 进行修补,并且正在了解基础知识。我有一个按钮连接,所以当它被按下时我会得到一个串行打印。

int button = 3;

void setup() {
  Serial.begin(9600);
  pinMode(button, INPUT_PULLUP);
}

void loop() {
  if (digitalRead(button) == LOW) {
    Serial.print("pressed\n");
  }
}

现在,当按下按钮时,它将打印pressed 一堆直到释放。现在我的下一步是连接一个 LED,我想将按钮用作切换开关。第一次按它会亮,再按一下它会关闭。但这会在按下按钮时运行数百次。我该如何解决这个问题?谢谢

int led = 5;
int button = 3;

void setup() {
  Serial.begin(9600);
  pinMode(button, INPUT_PULLUP);
  pinMode(led, OUTPUT);

  digitalWrite(led, LOW);
}

void loop() {
  if (digitalRead(button) == LOW) {
    Serial.print("pressed\n");
    toggleLed(led);
  }
}

int toggleLed(int led){
  if (digitalRead(led) == LOW) {
    Serial.print("set on");
    digitalWrite(led, HIGH);
  } else {
    Serial.print("set off");
    digitalWrite(led, LOW);
  }
}

【问题讨论】:

    标签: arduino arduino-uno arduino-ide


    【解决方案1】:

    Arduino IDE 附带一个示例代码,称为状态更改示例。研究它。基本上,您需要有一个变量来记住上次按下按钮时的状态,并且您只对按钮状态的变化做出反应。不是在按钮引脚为低时运行代码,而是在按钮引脚从高变为低时运行代码。

    【讨论】:

    • 那将是 File > Examples > 02.Digital > StateChangeDetection?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多