You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino串口触发LCD显示后持续运行问题求助

解决Arduino LCD显示后无法保持空白、重复显示的问题

你的问题核心在于flag1和flag2变量在触发后没有重置为false,导致每次loop()循环都会重复执行显示、延迟、清屏的逻辑——清屏后马上又重新显示文本,看起来就像内容一直停留在屏幕上。

修改后的代码如下:

#include <LiquidCrystal.h>

boolean flag1 = false, flag2 = false; // 初始化状态为false

const int rs = 3, en = 2, d4 = 4, d5 = 5, d6 = 6, d7 = 7;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  lcd.print("hello");
  delay(1000);
  lcd.clear();
}

void loop() {
  lcd.setCursor(0, 0);

  if(Serial.available()) {
    int c = Serial.read();
    if(c == 49) { // 收到数字1
      flag1 = true;
      flag2 = false;
    }
    else if(c == 50) { // 收到数字2
      flag2 = true;
      flag1 = false;
    }
  }

  if(flag1) {
    lcd.print("location 1"); // 用print输出字符串更合适
    delay(3000);
    lcd.clear();
    flag1 = false; // 执行完后重置flag,避免重复触发
  }

  if(flag2) {
    lcd.print("location 2");
    delay(3000);
    lcd.clear();
    flag2 = false; // 重置flag
  }

  delay(50);
}

关键修改说明:

  1. 初始化flag变量:一开始就把flag1和flag2设为false,避免初始状态不确定的问题
  2. 执行完显示后重置flag:在lcd.clear()之后把对应的flag设回false,确保只会执行一次显示-延迟-清屏的流程,之后不会重复触发
  3. 替换lcd.write为lcd.print:write()更适合输出单个字符,输出字符串用print()语义更准确,效果一致

修改后,发送数字1或2时,LCD会显示对应内容3秒,然后清屏保持空白,直到收到下一个数字再重复该流程。

内容的提问来源于stack exchange,提问作者Arcco Playz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:31:03