Я делаю проект NF C, чтобы прочитать тег NF C и показать данные. После отображения данных на экране ЖКД отображается 2 варианта: сначала «Сохранить», а затем «Отмена». Когда я выбираю Сохранить и нажимаю среднюю поворотную кнопку pu sh, она сохраняет данные, но если я выберу кнопку отмены (поворачивая вращающийся регулятор) pu sh среднюю поворотную кнопку, она вернется в предыдущее меню. После нескольких раз чтения тега средняя кнопка больше не работает, и мне нужно снова повернуть ее, чтобы она заработала. Есть идеи почему? Я хочу, чтобы средняя кнопка работала даже после нескольких раз, а не вращая ее снова и снова, чтобы она заработала.
Вот мой код:
// *********************************************************************
float jam, menit, detik, miliDetik;
unsigned long over;
unsigned long g_timer_1 = 0; // timer variable (global variable)
void getTag(uint8_t param)
// *********************************************************************
{
if (LCDML.FUNC_setup())
{
pos = 1;
//Serial.println(kdj);
charLCD(nmJurusan, 0, 0);
charLCD("Timer :", 0, 1);
lcd.setCursor(0, 2);
lcd.print("ID : ");
lcd.print(uidString);
selesai = millis();
digitalWrite(buzzer, LOW);
}
if (LCDML.FUNC_loop())
{
LCDML.SCREEN_resetTimer();
if (LCDML.BT_checkUp() || LCDML.BT_checkDown()) {
LCDML.BT_resetUp();
LCDML.BT_resetDown();
pos++;
}
dtime = selesai - mulai;
jam = int(dtime / 3600000);
over = dtime % 3600000;
menit = int(over / 60000);
over = over % 60000;
detik = int(over / 1000);
miliDetik = over % 1000;
lcd.setCursor(0, 1);
lcd.print("Timer : ");
lcd.print(jam, 0);
lcd.print(":");
lcd.print(menit, 0);
lcd.print(":");
lcd.print(detik, 0);
lcd.print(".");
if (jam < 10) {
lcd.print(miliDetik, 0);
lcd.print(" ");
}
switch (pos) {
case 1:
charLCD("- Save Cancel", 0, 3);
if (LCDML.BT_checkEnter() || blSimpan == 1) {
LCDML.BT_resetEnter();
saveLogSD();
LCDML.OTHER_jumpToFunc(readRFID);
}
break;
case 2:
charLCD(" Save - Cancel", 0, 3);
if (LCDML.BT_checkEnter()) {
LCDML.BT_resetEnter();
pos = 0;
jam = 0;
menit = 0;
detik = 0;
LCDML.OTHER_jumpToFunc(readRFID);
}
break;
}
if (pos > 2) {
pos = 0;
}
}
if (LCDML.FUNC_close())
{
pos = 0;
}
}