Arduino滚动文本程序在一段时间后会冻结。
创始人
2024-09-12 18:31:21
0

在Arduino上编写滚动文本程序有多种方法,其中一种常见的方法是使用LCD显示屏和LiquidCrystal库来实现。然而,显示大量文本并且在一段时间后冻结是常见的问题,这通常是由于代码中的延迟和阻塞操作导致的。

为了解决这个问题,可以通过使用非阻塞延迟函数和状态机的概念来修改程序。以下是一个示例代码,通过使用millis()函数来实现非阻塞延迟,并使用状态机来控制文本的滚动和冻结。

#include 

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);  // 设置LCD引脚

const int displayWidth = 16;  // LCD显示宽度
const int scrollDelay = 250;  // 滚动延迟时间(毫秒)
const int freezeDelay = 5000; // 冻结时间(毫秒)

enum State { SCROLLING, FROZEN };  // 状态机的状态
State currentState = SCROLLING;   // 初始状态为滚动

unsigned long previousTime = 0;   // 上一次状态改变的时间
int offset = 0;                   // 文本滚动的偏移量

void setup() {
  lcd.begin(displayWidth, 2);    // 初始化LCD
  lcd.print("Hello, World!");    // 显示初始文本
}

void loop() {
  unsigned long currentTime = millis();  // 获取当前时间

  if (currentState == SCROLLING) {
    if (currentTime - previousTime >= scrollDelay) {
      previousTime = currentTime;
      offset++;

      if (offset > displayWidth) {
        offset = -displayWidth;
      }

      lcd.setCursor(offset, 0);  // 设置文本的位置
    }
    
    if (currentTime - previousTime >= freezeDelay) {
      currentState = FROZEN;  // 改变状态为冻结
    }
  } else if (currentState == FROZEN) {
    // 冻结状态下不执行任何操作
  }
}

在这个示例代码中,我们使用了一个状态机来控制文本的滚动和冻结。在loop()函数中,我们首先获取当前时间,并检查当前状态。如果处于滚动状态,我们会检查是否达到了滚动延迟时间,如果是,则更新文本的偏移量,并将文本显示在LCD上。然后,我们检查是否达到了冻结时间,如果是,则将状态改变为冻结状态。

在冻结状态下,我们不执行任何操作,直到达到冻结时间后重新改变状态为滚动。

这种方法可以避免使用延迟函数来实现滚动文本,从而防止程序在一段时间后冻结。同时,通过使用状态机,我们可以控制程序的行为并及时改变状态。

相关内容

热门资讯

八分钟了解!一起宁德游戏钓蟹输... 八分钟了解!一起宁德游戏钓蟹输赢规律,白金岛跑得快辅助工具,黑科技教程(有挂脚本)小薇(透视辅助)致...
8分钟了解!衡阳丫丫字牌外 挂... 8分钟了解!衡阳丫丫字牌外 挂,拱趴大菠萝切牌规律,wpk教程(有挂普及)1、完成拱趴大菠萝切牌规律...
八分钟了解!广西跑得快助赢神器... 八分钟了解!广西跑得快助赢神器购买,赣牌圈开挂是真的吗,AA德州教程(有挂方法);1、超多福利:超高...
一分钟了解!大凉山生活号跑得快... 一分钟了解!大凉山生活号跑得快有挂吗,哈局十三张安卓辅助,玩家教你(有挂教学)在进入大凉山生活号跑得...
六分钟了解!闽悦麻将是不是有挂... 六分钟了解!闽悦麻将是不是有挂,花花生活圈怎么老是输,教你攻略(有挂工具)花花生活圈怎么老是输辅助器...
一分钟了解!小程序的雀神麻将怎... 一分钟了解!小程序的雀神麻将怎么玩才会赢,中至窝龙如何提高自己的胜率,专业教程(有挂神器)1、在小程...
3分钟了解!皮皮斗地主外 挂,... 3分钟了解!皮皮斗地主外 挂,兴动棋牌麻将有挂吗,解密教程(有挂插件)兴动棋牌麻将有挂吗辅助器中分为...
七分钟了解!胡乐辅助器免费版,... 七分钟了解!胡乐辅助器免费版,掌心圈麻将有挂是真的吗,详细教程(有挂解说)一、掌心圈麻将有挂是真的吗...
8分钟了解!随意玩拼三张能破解... 8分钟了解!随意玩拼三张能破解吗,中至麻将发牌规律,攻略方法(有挂科普)1、玩家可以在随意玩拼三张能...
二分钟了解!蜂娱棋牌2有挂吗,... 二分钟了解!蜂娱棋牌2有挂吗,拱趴十三水输赢规律,德州教程(有挂辅助)1.拱趴十三水输赢规律 ai辅...