Повторяющиеся данные отображаются на экране, но не в SDCard Arduino Mega - PullRequest
0 голосов
/ 06 февраля 2020

Я нахожусь в проекте, который пытается показать текст из Datalog.txt в Arduino Mega SDCard на ЖК-экран 20 X 4. Проблема в том, что когда я сохраняю 1 данные на SDCard, данные показывают дублирующую информацию с другим номером.

Например:

  1. Cat1

Затем, когда я нажимаю sh среднюю кнопку энкодера для следующего отображения данных

Cat1

но когда я проверяю SDCard, это только одна информация: Cat1

Я думаю, что что-то не так, но когда я помещаю вторую информацию (Dog1) на SDCard данные становятся такими, когда я нажимаю sh среднюю кнопку кодера для следующего.

1.Cat1

2.Cat1

3.Dog1

4.Cat1

Вот моя кодировка

// *********************************************************************
int noLog, noLCD;
char msgLog;
String listInformation;
char* txtNext;
char* txtCancel;
void listDataUID(uint8_t param)
// *********************************************************************
{
  if (LCDML.FUNC_setup())
  {
    charLCD("Please Wait...", 0, 1);
    cekSDCARD();
    delay(2000);
    lcd.clear();

    noLog = 0;
    noLCD = noLog + 1;
    pos = 1;
    LCDML.FUNC_setLoopInterval(250);
  }

  if (LCDML.FUNC_loop())
  {
    if (LCDML.BT_checkUp() || LCDML.BT_checkDown()) {
      LCDML.BT_resetUp();
      LCDML.BT_resetDown();
      pos++;
    }

    listJurusan = String(noLCD) + ". " + arNM[noLog];
    scrollTextLong(listInformation);
    lcd.setCursor(0, 1);
    lcd.print(F("Timer :"));
    lcd.setCursor(8, 1);
    lcd.print(arTime[noLog].c_str());

    charLCD_2(txtNext, 0, 2);
    charLCD_2(txtCancel, 0, 3);

    switch (pos) {
      case 1:
        txtNext = "- Next";
        txtCancel = "  Cancel";
        if (LCDML.BT_checkEnter()) {
          lcd.clear();
          noLog++;
          noLCD++;
        }
        break;
      case 2:
        txtNext = "  Next";
        txtCancel = "- Cancel";

        if (LCDML.BT_checkEnter()) {
          LCDML.FUNC_goBackToMenu(1);
        }
        break;
    }
  }

  if (pos > 2) {
    pos = 1;
  }

  if (noLog >= arNM.size()) {
    noLog = 0;
    noLCD = 1;
  }

  if (LCDML.FUNC_close())
  {
    pos = 0;
  }
}



...