Arduino-灯持续时间超过预期

Arduino-灯持续时间超过预期,arduino,Arduino,假设代码在引脚5高时点亮引脚13处的电路内LED,但我遇到了两个问题 通过数字仪表测量电压时-一个引脚位于arduino接地,另一个引脚位于1,2,3,4。它们显示了一些非零值。早期的触发引脚为4,灯一直亮着 当引脚5处于高电平时(通过将5V引脚从Arduino连接到引脚5),LED将照常亮起,但如果引脚5保持高电平超过1/2秒,则即使在引脚5从5V引脚断开后,灯也会保持高电平超过0.5秒 正如Juraj所说,你正在经历电噪声,只需放置一个220欧姆的下拉电阻器 如前所述,使用下拉电阻器。或者将

假设代码在引脚5高时点亮引脚13处的电路内LED,但我遇到了两个问题

  • 通过数字仪表测量电压时-一个引脚位于arduino接地,另一个引脚位于1,2,3,4。它们显示了一些非零值。早期的触发引脚为4,灯一直亮着
  • 当引脚5处于高电平时(通过将5V引脚从Arduino连接到引脚5),LED将照常亮起,但如果引脚5保持高电平超过1/2秒,则即使在引脚5从5V引脚断开后,灯也会保持高电平超过0.5秒

  • 正如Juraj所说,你正在经历电噪声,只需放置一个220欧姆的下拉电阻器

  • 如前所述,使用下拉电阻器。或者将电路更改为低电平,并使用输入\ U上拉

  • 我相信你使用的是延迟微秒,这意味着led的闪烁速度对你的眼睛来说太快了。如果您想要查询中暗示的“半秒”,那么可以使用delay(500)


  • 输入引脚是浮动的。添加一个下拉电阻器
    int buttonState = LOW;
    int light = 13;
    void setup() {
      // put your setup code here, to run once:
    
      pinMode(gateopen,INPUT);
      pinMode(light, OUTPUT);
    
    }
    
    void loop() 
    {
      // put your main code here, to run repeatedly:
      buttonState = digitalRead(gateopen);
      if (buttonState == HIGH)
      {
        digitalWrite(light, HIGH);
      } 
      else 
      {
        digitalWrite(light, LOW);
      }
      //delayMicroseconds(500);
    }