Часы на ESP-01(NodeMCU) + MAX7219 + WEB интерфейс

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

?

Вы повторили это проект?

  1. Нет (просто ознакомился)

    5 голосов
    13,5%
  2. Да, один раз (попробовал)

    7 голосов
    18,9%
  3. Да, не однократно

    25 голосов
    67,6%
Можно выбрать сразу несколько вариантов.
  1. IvanUA

    IvanUA Гик

    Уже можно прошивать бинарник из меню help.
     
    chipmoca нравится это.
  2. gtsky

    gtsky Нерд

    из чего сделали корпус? и что наклеили на матрицу??
     
  3. gtsky

    gtsky Нерд

    Иван а можно припилить в эту прошивку будильник с возможностью выбора дня недели по каким дням работать а по каким нет? И еще сделать к примеру вывод сообщения когда срабатывает будильник " Пора вставвать " ну и иметь возможность с веб морды менять эту надпись?)
     
  4. Deniskyn

    Deniskyn Гик

    Планка деревянная из строймаркета, на матрице автомобильная тонировка
     
  5. IvanUA

    IvanUA Гик

    Все можно. Но я уже писал ранее, пока будильников в планах на эту прошивку нет. Возможно будет в следующей.

    ПС. Но ничего вам не мешает попробовать сделать их сами, ведь вы в этой теме не просто что бы скачать прошивку прошить и пользоваться ;) Учитесь - это на много интереснее.
     
  6. gtsky

    gtsky Нерд

    )) Я только сегодня купил Брус лавочнй липовый)) замастырил такуюже))
     
  7. jgupdimon

    jgupdimon Нерд

    Прекрасно смотрится в кабель канале 60х40, обернутом винилом. Много раз повторял.
     
  8. jgupdimon

    jgupdimon Нерд

    Чуть позже, часики в бане тикают.
     
  9. Slaiterx

    Slaiterx Гик

    Хочу выводить памятные даты и праздники зделал так все работает показывает каждый час но как прописать часы показа чтобы допустим ночью не показывало а только днем
    Код (C++):
      if(hour == 22 && minute == 00) {
        printStringWithShift("       22:30      \200\200\200   Спокойной ночи   \200\200\200", speedLine);
        return;
       }
      if(hour == 23 && minute == 00) {
        printStringWithShift("       23:00      \200\200\200   Спите пожауйста уже   \200\200\200", speedLine);
        return;
      }
      if(hour == 8 && minute == 00) {
        printStringWithShift("       08:00      \200\200\200   Доброе утро   \200\200\200", speedLine);
        return;
      }

      if(hour == 9 && minute == 00) {
        printStringWithShift("       09:00      \200\200\200   Хватит спать вставайте уже   \200\200\200", speedLine);
        return;
      }
      if(month == 12 && day == 31 && minute == 0) {
        printStringWithShift("*** С Новым годом !!! ***", speedLine);
        return;
      }
      if(month == 1 && day == 1 && minute == 0) {
        printStringWithShift("*** С Новым годом !!! ***", speedLine);
        return;
    нужно как то создать массив там типо hour == {9,10,11,12,13}но как это сделать не знаю
     
  10. jgupdimon

    jgupdimon Нерд

    if(month == 12 && day == 31 && hour == 23 && minute == 58) {
    printStringWithShift("*** С Новым годом !!! ***", speedLine);
    return;
    Как то так наверное
     
  11. Slaiterx

    Slaiterx Гик

    это понятно что так я хочу не один раз в сутки в определенный час показывать а в определенные часы в сутках допустим хочу я какоето сообщение выводить каждый час начиная с восьми утра и заканчивая десятью вечера
     
  12. jgupdimon

    jgupdimon Нерд

    Так повтори строки с другим временем и все.
    if(month == 12 && day == 31 && hour == 20 && minute == 00) {
    printStringWithShift("*** С Новым годом !!! ***", speedLine);
    return;
    Во сколько повторять во столько и ставь.
     
  13. Slaiterx

    Slaiterx Гик

    Ну да просто но надо правильно
     
  14. jgupdimon

    jgupdimon Нерд

    Задай вопрос Ивану, там наверное нужен цикл по времени.
     
  15. gtsky

    gtsky Нерд

    канечно интересней )) на 100 %
    Скажите я вот наше в коде интересный блок
    if(hour == 22 && minute == 55) { // якщо наш час - то іде повідомлення для коханої
    tone(buzzerPin, 2000, 40);
    delay(200);
    tone(buzzerPin, 2000, 40);
    delay(200);
    tone(buzzerPin, 2000, 40);
    printStringWithShift((" 22:55 \200\200\200 " + tMes + " \200\200\200").c_str(), timeScrollSpeed);
    return;
    как реализовать его вывод по времени редактирую в веб морде?
     
  16. IvanUA

    IvanUA Гик

    Если хотите что бы какое то событие выводилось в определенный день и к примеру в определенный период времени, то используйте следующие условия....
    Код (C++):
    if((month == 12 && day == 31 && minute == 00 (hour >7  && hour <= 20)) {
    ну и так далее....
    Если вы хотите что бы значения (месяц, день или часы) были изменяемые, то для них надо организовать переменные....
    К примеру вы хотите что бы была возможность самому задавать месяц... то ваше выражение будет выглядеть к примеру так...
    Код (C++):
    byte monthZnamenetelny = 3;   // в начале кода обязательно надо объявить переменную
    далее где то в лупе...
    Код (C++):
    if((month == monthZnamenetelny && day == 31 && minute == 00 (hour >7 && hour <= 20)) {
    если ничего не менять то 31 числа третьего месяца с 8 утра до 20 вечера в 00 минут будет срабатывать это событие...
    Как же теперь нам работать с переменной...
    В первую очередь надо позаботится о том что бы значение этой переменной сохранялось в памяти ЕСП....
    В коде ищем закладку FC там есть две функции записи переменных в память и чтения из памяти в переменные, по аналогии дописуете свою переменную.
    Потом на странице которая вам нравится, к примеру на странице настройки часов, смотрите как меняются другие переменные и по аналогии делаете также но уже для своей переменной типа monthZnamenetelny.
    Теперь у вас на странице будет как бы возможность указать значение вашей переменной, но....
    1. Вам надо на страницу передать текущее значение этой переменной
    2. Вам надо при нажатии кнопки сохранить передать это значение со страницы в ЕСП и записать его в память.
    Есть такая вкладка как SRV.
    В начале есть процедура которая передает данные на страницу, а дальше есть процедуры которые получают данные со страницы и записывают их в переменные, а потом в память. По аналогии думаю что разберетесь...
    Единственное что надо не забыть что на каждой странице есть функция, которая вызывается при нажатии на кнопку сохранить, и она передает в ЕСП какие то переменные и их значения, выглядит она примерно так...
    Код (C++):
    function set_ntp(submit) {
                server = "/ntp?ntpServerName=" + val('ntpServerName') + "&timeZone=" + val('timeZone') + "&kuOn=" + val('kuOn') + "&kuOff=" + val('kuOff') + "&isDayLightSaving=" + val_sw('isDayLightSaving');
                send_request(submit,server);
              }
    По аналогии добавляете туда свою переменную.....

    По началу кажется немного сложновато, но стоит один раз проделать эту процедуру и дальше все будет казаться очень легко и просто....
     
    Slaiterx нравится это.
  17. Slaiterx

    Slaiterx Гик

    Вот спасибо тебе добрый человек
     
  18. RuGOST

    RuGOST Нуб

    Ребята подскажите что нужно купить или желательно какие должны быть модули для беспроводного подключения BME280, просто проводами не хочется подключать?
     
  19. gtsky

    gtsky Нерд

    а куда вы его хотите вынести?)) на улицу?)
     
  20. RuGOST

    RuGOST Нуб

    На улицу конечно, зачем его дома держать, дома всегда тепло же!