arduino on / off NON 瞬时开关实现辅助
arduino on / off NON momentary switch implementation assistance
我是编程和 Arduino 的新手。
开发板 - ESP8266 Nodemcu 引出线如下,
我想要实现的是从引脚 0 发送一个基于 LOW/HIGH 值的命令。
双腿开关的一条腿连接到 D3(GPIO0 和程序 0),另一条接地。
我正在尝试的代码如下,
#include<BitsAndDroidsFlightConnector.h>
BitsAndDroidsFlightConnector connector = BitsAndDroidsFlightConnector();
const byte exampleButtonA = 0;
void setup() {
Serial.begin(115200);
pinMode(exampleButtonA, INPUT_PULLUP);
}
void loop() {
byte exampleButtonAvalue = digitalRead(exampleButtonA);
switch(exampleButtonAvalue)
{
case LOW:
Serial.println("ON IT IS");
break;
case HIGH:
Serial.println("OFF IT IS");
break;
default:
Serial.println("error!");
break;
}
}
我面临的问题是,当我刷新这个程序时,基于物理开关打开或关闭
它不断打印“ON IT IS”或“OFF IT IS”
休息真的没有发生。我只希望它执行一次。
我也用 if else 尝试过这个,但遇到重复打印的同样问题。
#include<BitsAndDroidsFlightConnector.h>
BitsAndDroidsFlightConnector connector = BitsAndDroidsFlightConnector();
const byte exampleButtonA = 0;
void setup() {
Serial.begin(115200);
pinMode(exampleButtonA, INPUT_PULLUP);
}
void loop() {
if(digitalRead(exampleButtonA) == LOW){
Serial.println("ON");
delay(200);
}
else {
Serial.println("OFF");
delay(200);
}
}
有什么帮助吗?
如果你想只看到一次消息,你需要在 setup() 部分编写你的代码。
loop() 部分中的所有代码在循环中重复。
将您的代码替换为:
#include<BitsAndDroidsFlightConnector.h>
BitsAndDroidsFlightConnector connector = BitsAndDroidsFlightConnector();
const byte exampleButtonA = 0;
int exampleButtonAvalue = 0;
int saved_exampleButtonAvalue = 0;
void setup() {
Serial.begin(115200);
pinMode(exampleButtonA, INPUT_PULLUP);
}
void loop() {
exampleButtonAvalue = digitalRead(exampleButtonA);
if (exampleButtonAvalue != saved_exampleButtonAvalue){
if(exampleButtonAvalue == LOW){
Serial.println("ON");
} else {
Serial.println("OFF");
}
saved_exampleButtonAvalue = exampleButtonAvalue;
}
delay(200);
}
我是编程和 Arduino 的新手。 开发板 - ESP8266 Nodemcu 引出线如下,
我想要实现的是从引脚 0 发送一个基于 LOW/HIGH 值的命令。 双腿开关的一条腿连接到 D3(GPIO0 和程序 0),另一条接地。
我正在尝试的代码如下,
#include<BitsAndDroidsFlightConnector.h>
BitsAndDroidsFlightConnector connector = BitsAndDroidsFlightConnector();
const byte exampleButtonA = 0;
void setup() {
Serial.begin(115200);
pinMode(exampleButtonA, INPUT_PULLUP);
}
void loop() {
byte exampleButtonAvalue = digitalRead(exampleButtonA);
switch(exampleButtonAvalue)
{
case LOW:
Serial.println("ON IT IS");
break;
case HIGH:
Serial.println("OFF IT IS");
break;
default:
Serial.println("error!");
break;
}
}
我面临的问题是,当我刷新这个程序时,基于物理开关打开或关闭 它不断打印“ON IT IS”或“OFF IT IS” 休息真的没有发生。我只希望它执行一次。
我也用 if else 尝试过这个,但遇到重复打印的同样问题。
#include<BitsAndDroidsFlightConnector.h>
BitsAndDroidsFlightConnector connector = BitsAndDroidsFlightConnector();
const byte exampleButtonA = 0;
void setup() {
Serial.begin(115200);
pinMode(exampleButtonA, INPUT_PULLUP);
}
void loop() {
if(digitalRead(exampleButtonA) == LOW){
Serial.println("ON");
delay(200);
}
else {
Serial.println("OFF");
delay(200);
}
}
有什么帮助吗?
如果你想只看到一次消息,你需要在 setup() 部分编写你的代码。 loop() 部分中的所有代码在循环中重复。
将您的代码替换为:
#include<BitsAndDroidsFlightConnector.h>
BitsAndDroidsFlightConnector connector = BitsAndDroidsFlightConnector();
const byte exampleButtonA = 0;
int exampleButtonAvalue = 0;
int saved_exampleButtonAvalue = 0;
void setup() {
Serial.begin(115200);
pinMode(exampleButtonA, INPUT_PULLUP);
}
void loop() {
exampleButtonAvalue = digitalRead(exampleButtonA);
if (exampleButtonAvalue != saved_exampleButtonAvalue){
if(exampleButtonAvalue == LOW){
Serial.println("ON");
} else {
Serial.println("OFF");
}
saved_exampleButtonAvalue = exampleButtonAvalue;
}
delay(200);
}