Таймер-часы на кухню

Тема в разделе "Глядите, что я сделал", создана пользователем IvanUA, 2 сен 2018.

  1. makks

    makks Нуб

    А где прошивки то?
     
    Последнее редактирование: 19 мар 2019
  2. sanik

    sanik Гик

  3. Pop

    Pop Нерд

    Не подумайте что зануда) ,но нашел несколько ошибок в коде (повторяю данное устройство).
    1.В строке 135 код:
    Код (C++):
    void displayTimer(){
      h = (int)timmer / 3600;
      m = (int)timmer / 60 - h * 60;
      s = timmer - m * 60;
      tm1637.point(1);
      if(timmer > 3600) {
     
    думаю нужно ставить
    Код (C++):
    void displayTimer(){
      h = (int)timmer / 3600;
      m = (int)timmer / 60 - h * 60;
      s = timmer - m * 60;
      tm1637.point(1);
      if(timmer >= 3600) {
     
    2.
    Код (C++):
    void displayTime(){
      tm1637.point(flash);
      tm1637.display(0, hour / 10);
      tm1637.display(1, hour % 10);
      tm1637.display(2, minute / 10);
      tm1637.display(3, minute % 10);
    }//-------------------------------------
     
    тут неплохо добавить в конце:
    Код (C++):
    pause = 1;
    иногда после выхода в режим показа времени (например кнопкой "-") данная переменная остается установлена в 0, и когда запускаешь следующий таймер, он сразу стартует.

    Давно хотел сделать на кухню такой таймер, идея годная )

    P.S. Синхронизацию времени все-таки сделал NTP раз в час и при запуске, как-то мне так привычнее.
    P.S.S. Еще добавил публикацию в топик MQTT события "Alarm" , при окончании работы таймера. Кухня у меня в отдельно-стоящем здании, и система (MajorDoMo) уведомит меня об окончании таймера и в доме (мало-ли)
     
    Последнее редактирование: 30 май 2019
    IvanUA нравится это.
  4. Serg78

    Serg78 Нуб

    Сломались часы-таймер в духовке, вот думаю заменить на эти ) Подскажите начинающему, в каком месте скетча лучше включать реле духовки? Выключать думаю в начале п/п Аларм? а релюшку подключить к 00 или А0? Спасибо
    0 = PGM, A0 = аналог... либо кнопки переделать под аналог, тогда 3 дискретных свободны, или подпаяться под Д9 или Д10
     
    Последнее редактирование: 25 июл 2019
  5. IvanUA

    IvanUA Гуру

    Точно не помню, но кажись там в коде есть какая то переменная которая указывает на то что таймер работает. Та вот вместе а состоянием этой переменной можно менять и состояние порта которым будете управлять реле. Ну или по таймеру менять состояние порта в зависимости от состояния этой переменной.
     
  6. Serg78

    Serg78 Нуб

    Иван, подскажите пожалуйста начинающему ) не могу понять это условие
    if (millis() % (statusWifi ? 1000 : 500) < (statusWifi ? 500 : 400) ...
    как его расшифровать? что значит знак вопроса и далее 1000 : 500... не нашел в описании программирования Ардуино. Где посмотреть?
    И еще не понял назначение строки
    if (key != 0 && (keySpeed == 0 || (h == 1 && m == 0) || (h == 0 && m == 59) || (m == 9 && s == 00))) tm1637.clearDisplay();
    Поясните, если вспомните )
    Спасибо
     
    Последнее редактирование: 26 июл 2019
  7. KindMan

    KindMan Гуру

    Это сокращенная запись условия If...else. т.е. (statusWifi ? 1000 : 500) это тоже самое, что if (statusWifi) {1000} else {500}
     
    sendsay и IvanUA нравится это.
  8. IvanUA

    IvanUA Гуру

    Если "statusWifi" = истина то значение данного условия будет 1000 если же ложь то 500
    Тут все просто
    key != 0 - если нажата какая либо кнопка
    keySpeed == 0 - это скорость нарастания или убывания счетчика (кажись)
    (h == 1 && m == 0) - это соответственно показания часов и минут...
    tm1637.clearDisplay() - очистка дисплея
     
  9. Serg78

    Serg78 Нуб

    Большое спасибо! вопрос о последней строке - не как ее разложить по операторам - это я понял, а зачем очищать дисплей? ) что это за условие такое на словах, чтобы его чистить?
     
  10. IvanUA

    IvanUA Гуру

    Если к примеру сейчас на дисплее "1234", а вы будете выводить к примеру " 56", то первые два сегмента не сотрутся и получится "1256"
     
    Serg78 нравится это.
  11. Serg78

    Serg78 Нуб

    Спасибо! Вот только не хватает вв/выв... и у меня ситуация, где только 2 отверстия под управление ) насверлить никто не запрещал конечно, но будет не красиво. В общем сначала подумал использовать 2 кнопки от аналогового входа: 1я- "+1", 2я "-1", обе = "пуск/стоп". Но тут сомнения, как это отличить, чтобы было просто в использовании.... Что это? просто нажатие кнопки или это только миг перед нажатием второй кнопки? долгое нажатие - это ускоренный инкремент или лишь ждем нажатие второй, чтобы сделать пуск? Есть ли какие-то алгоритмы такого управления?
    Другой вариант - это использовать енкодер, для инкремента/дикримента и кнопку для пуска, но тут с выводами И/О туго... надо еще оставить под вкл/выкл реле, уж молчу хотел еще и температуру внутри духовки вывести.... ESP32 ставить? )
     
    Последнее редактирование: 13 авг 2019
  12. Pop

    Pop Нерд

    Наконец собрал :)
     

    Вложения:

    • timer.jpg
      timer.jpg
      Размер файла:
      71,5 КБ
      Просмотров:
      620
  13. tosat

    tosat Нерд

    Сейчас повторяю этот таймер от Ивана, но к сожаленью так и не нашёл схемы подключения Si7021.
     
  14. tosat

    tosat Нерд

    У всех такие крутые корпуса, я же всё это дело вмонтировал в маленькую коробочку, которую ранее приобрёл на Али, датчик Si7021 расположен на задней панели(припаян к штырям проходящим через заднюю стенку, которые в свою очередь припаяны к модулю часов).Таймер работает нормально, но для изменения летнего и зимнего времени приходится перешивать, также у V2 какие то проблемы с его переводом.

    image.jpeg image.png
     
    sendsay нравится это.
  15. sendsay

    sendsay Нерд

    Вам не кажется, если часто к модулю ходить за временем виснет контроллер. На модуле есть секундный сигнал, я бы снимал его и раз в секунду обновлял время. Где то это нашел, даже со схемой но не могу найти где))
     
    Последнее редактирование: 30 дек 2019
  16. sendsay

    sendsay Нерд

    По поводу перешивания для летнего времени, порекомендую Ивану переключать летнее время по MQTT. Тогда можно просто командой.
     
  17. alp69

    alp69 Форумчанин

    Или кнопку добавить, которая будет либо увеличивать переменную на дельту сезонного времени, либо уменьшать. Раз в полгода нажал и всего делов...
     
    sendsay нравится это.
  18. sendsay

    sendsay Нерд

    Прикольно, но по сравнению с MQTT надо вкладывать ресурсы, а мой вариант бесплатный, и реализация 15 минут
     
    alp69 нравится это.
  19. tosat

    tosat Нерд

    Как вариант в скетче можно добавить даты для автоматического переключения на летнее и зимнее время.
     
    sendsay нравится это.
  20. sendsay

    sendsay Нерд

    Отличная мысль! С новым годом!