Не обновляется время срабатывания таймера
- Войдите на сайт для отправки комментариев
Втр, 20/12/2016 - 15:29
у меня запара такая, когда обновляю время срабатывания таймера с помощью стороки:
if (14 == hour && 07 == minute && 0 == second) timerReset();
новое время на экран не выводится, остается старое, пока reset не нажмешь.
Что можно прописать, чтобы это исправить?
Прописать можно пилюль.
Вы хотите что бы местные экстрасенсы по одной строчке кода, поняли, что там происходит и чего вы хотите в итоге ?
здесь сбрасывается рассписание и управляется реле
void loop() { byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); lcdPrint(); if (14 == hour && 07 == minute && 0 == second) timerReset(); // обработка кнопок if (key() == 1) menu(); else if (key() == 3) digitalWrite(outPin, HIGH); else if (key() == 4) digitalWrite(outPin, LOW); // сравниваем время и управляем выходом// if (setHorClockOff == hour && setMinClockOff == minute) digitalWrite(outPin, LOW); if (setHorClockOn == hour && setMinClockOn == minute) digitalWrite(outPin, HIGH); }здесь задается новое рассписание и далее выводится инфа на экран:
void timerReset(){ EEPROM.write(0, 20); //часы вкл EEPROM.write(1, random(0, 59)); //минуты вкл EEPROM.write(3, random(0, 2)); //часы выкл EEPROM.write(4, random(30, 59)); //минуты выкл delay(1000); // нужно подождать, иначе функция вызавиться повторно } void lcdPrint(){ byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month, &year); lcd.clear(); lcd.setCursor(0, 0); if (hour < 10) lcd.print("0"); lcd.print(hour); lcd.print(":"); if (minute < 10) lcd.print("0"); lcd.print(minute); // lcd.print(":"); // if (second < 10) lcd.print("0"); // lcd.print(second); // lcd.setCursor(8, 0); // lcd.print(" "); lcd.setCursor(0, 1); if (dayOfMonth < 10) lcd.print("0"); lcd.print(dayOfMonth); lcd.print("/"); if (month < 10) lcd.print("0"); lcd.print(month); lcd.print("/"); if (year < 10) lcd.print("0"); lcd.print(year); // lcd.setCursor(11, 0); if (setHorClockOn < 10) lcd.print("0"); lcd.print(setHorClockOn); lcd.print(":"); if (setMinClockOn < 10) lcd.print("0"); lcd.print(setMinClockOn); lcd.setCursor(11, 1); if (setHorClockOff < 10) lcd.print("0"); lcd.print(setHorClockOff); lcd.print(":"); if (setMinClockOff < 10) lcd.print("0"); lcd.print(setMinClockOff); lcd.setCursor(7, 0); if (digitalRead(outPin)) lcd.print("ON "); else lcd.print("Off"); delay(200); }Из этого кода не понятно где setHorClockOff/On и setMinClockOff/On устанавливаются. Судя по всему, надо либо сначала их задать в timerReset(), а потом уже в EEPROM их записать. Ну либо как у вас, сначала записать, а потом добавить чтение в переменные.
да, помогло! Большое спасибо)
if (14 == hour && 07 == minute && 0 == second) timerReset();
Хорошо, что хоть 07, а не, скажем 011.
Вы всегда так пишете?
А разницу между 7 и 07 понимаете? Ну, или между 17 и 017 - так интереснее?