繁体   English   中英

Arduino:LCD不会关闭

[英]Arduino: LCD won't turn off

几天前,我开始使用Arduino。 我已经用DHT22设置了一个小项目,以读取温度和湿度并将其写入LCD。 那没有问题。 现在,我只想在按下按钮时打开LCD的背光灯。 大多数情况下也可以:

void loop() {

  buttonState = digitalRead(BUTTONPIN);

  currentMillisScreen = millis();
  if (buttonState == HIGH) {
    screenOn = true;
    lcd.backlight();
  }

  // DHT22 related code in here

  if (currentMillisScreen - previousMillisScreen >= SCREEN_ON_TIME) {
    previousMillisScreen = currentMillisScreen;
    screenOn = false;
    lcd.noBacklight();
  }
}

问题在于,使用此代码后,背光不会始终保持精确的5秒钟亮起。 我认为将currentMillisScreen = millis()放在下面的if语句中可以解决该问题:

  if (buttonState == HIGH) {
  currentMillisScreen = millis();
  screenOn = true;
  lcd.backlight();
 }

但是,如果我这样做,背光将不会再次关闭,我也不明白为什么。

您没有在循环中更新currentMillisScreen ,这就是您的问题。 您只需要找到currentTime(等于millis() )和上次打开灯的时间之间的差异,如果达到阈值以上,则将其关闭。 像这样:

#define SCREEN_ON_TIME 5000
bool screenOn = false;
void setup()
{
    //setup
}
void loop()
{

    buttonState = digitalRead(BUTTONPIN);

    if (buttonState == HIGH)
    {
        previousMillisScreen = millis();
        lcd.backlight();
        screenOn = true;
    }

    // DHT22 related code in here

    // if time passed above SCREEN_ON_TIME after we turned on light
    if ((screenOn) && (millis() - previousMillisScreen >= SCREEN_ON_TIME))
    {
        lcd.noBacklight();
        screenOn = false;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM