簡體   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