在esp32

时间:2017-11-06 00:42:32

标签: arduino esp32

当我按下esp32上的启动按钮时,我试图打开LED(引脚2)!这是我的代码!知道为什么这不起作用吗?

// constants won't change. They're used here to set pin numbers:
const int buttonPin = 0;     // the number of the pushbutton pin
const int ledPin =  2;      // the number of the LED pin

// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);
}

void loop() {
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }
}

1 个答案:

答案 0 :(得分:1)

您的设计在多种方面存在致命缺陷,主要是在芯片启动时,I / O引脚不在您的代码控制之下,一旦检测到该信号,您的程序就会停止运行。重新启动会恢复其默认启动状态。此外,按钮输入肯定会受到中断的影响,您的轮询循环永远不会看到它变高。

如果你想在芯片启动时保持LED亮起,你需要另一个元件,比如JFET。将I / O引脚连接到JFET的栅极,将其源极和漏极引脚与LED的电源或接地极串联,然后在程序运行时将I / O引脚设置为高电平,以偏置JFET,从而保持源极和漏极之间的开路。一旦门变低,电路就会关闭,LED会亮起。当引导程序执行程序时,它会再次将该引脚设置为高电平,LED熄灭。作为奖励,您不需要浪费任何计算轮询i / o。赢:赢