Часы на esp8266 и max7219 + android управление

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

?

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

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

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

    111 голосов
    42,0%
  3. Да, не однократно

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

    IvanUA Гуру

    [​IMG]
    png картинки

    Упс. Уже ответили.... ну пусть будет))))
     
    Последнее редактирование: 19 мар 2018
    saha74 нравится это.
  2. jgupdimon

    jgupdimon Гик

    Здравствуйте, Иван. Ну, может накидаете скетч с датами праздников, очень-очень хочется. Научусь, буду сам делать, а пока "УВЫ". Заранее спасибо.
     
  3. Karas8628

    Karas8628 Нерд

    Подскажите,а как реализовать вывод часов с секундами?
     
  4. IvanUA

    IvanUA Гуру

    Простите. Подсказать могу, а заниматься конкретно этим увы - не имею свободного времени.
    Если на 4 матрицы, то нужно будет использовать узкий шрифт. Если на большее количество матриц, то в программе вывода часов, добавляете вывод секунд. Не забывайте правильно расставить их на экране (выше обсуждалось как сдвигать цифры по экрану).
     
  5. big_alex

    big_alex Гик

    Переделал узкий шрифт в более округлый
    Код (C++):
    const uint8_t dig4x8[] PROGMEM = { 5,
    0x04, 0x7E, 0x81, 0x81, 0x7E,
    0x04, 0x04, 0x82, 0xFF, 0x80,
    0x04, 0xC2, 0xA1, 0x91, 0x8E,
    0x04, 0x42, 0x81, 0x89, 0x76,
    0x04, 0x18, 0x14, 0x12, 0xFF,
    0x04, 0x4F, 0x89, 0x89, 0x71,
    0x04, 0x7E, 0x89, 0x89, 0x71,
    0x04, 0xF1, 0x09, 0x05, 0x03,
    0x04, 0x76, 0x89, 0x89, 0x76,
    0x04, 0x8E, 0x91, 0x91, 0x7E,
    };
    После обновления платы до версии 2.4.0 столкнулся с ситуацией когда после перепрошивки часы уходят в циклическую перезагрузку, для нормальной работы необходимо в настройках платы выставить IwIP Variant - 1.4 (по умолчанию 2)
    На версии 2.4.1 не проверял

    IMG20180321184026.jpg
     
    Последнее редактирование: 21 мар 2018
    Karas8628 нравится это.
  6. Antonredst

    Antonredst Нерд

    Замените свой кусок кода функции void showAnimClock(){
    byte digPos[6]={1,8,18,25,34,41};
    int digHt=16;
    int num=6;
    int i;
    if(del==0) {
    del=digHt;
    for(i=0; i<num; i++) digold=dig;
    dig[0]=hour/10?hour/10:10;
    dig[1]=hour%10;
    dig[2]=minute/10;
    dig[3]=minute%10;
    dig[4]=second/10;
    dig[5]=second%10;
    for(i=0; i<num; i++) digtrans=(dig==digold)?0:digHt;
    } else
    del--;
    clr();
    for(i=0; i<num; i++){
    if(digtrans==0){
    dy=0;
    showDigit(dig, digPos, dig6x8);
    } else {
    dy=digHt-digtrans;
    showDigit(digold, digPos, dig6x8);
    dy=-digtrans;
    showDigit(dig, digPos, dig6x8);
    digtrans--;
    }
    }
    dy=0;
    if((secFr>=7000&&secFr<14000)||secFr>=21000){ // мерегтіння двокрапок в годиннику підвязуємо до личильника циклів
    setCol(15, WIFI_connected?0x66:0x60);
    setCol(16, WIFI_connected?0x66:0x60);
    setCol(32, WIFI_connected?0x66:0x60);
    setCol(32, WIFI_connected?0x66:0x60);
    }
    if(statusUpdateNtpTime){ // якщо останнє оновленя часу було вдалим, то двокрапки в годиннику будуть анімовані
    if(secFr>=0&&secFr<7000){
    setCol(15, WIFI_connected?0x24:0x20);
    setCol(16, WIFI_connected?0x42:0x40);
    }
    if(secFr>=14000&&secFr<21000){
    setCol(15, WIFI_connected?0x42:0x40);
    setCol(16, WIFI_connected?0x24:0x20);
    }
    }
    refreshAll();
    }
     
    IvanUA нравится это.
  7. Karas8628

    Karas8628 Нерд

     
  8. Karas8628

    Karas8628 Нерд

    Если на 4 матрицы, то нужно будет использовать узкий шрифт.

    А подробнее? сделал шрифт узким,а часы так и есть без секунд
     
  9. Antonredst

    Antonredst Нерд

    У меня дело в том что на 6 матриц и версия одна из первых 4.х. какая то
     
  10. Karas8628

    Karas8628 Нерд

    Да я уже понял что этот кусок кода на 6 матриц,но все же спасибо)
     
  11. Karas8628

    Karas8628 Нерд

     
  12. Karas8628

    Karas8628 Нерд

    а также как вернуть недостающий "0" после 23
     
  13. IvanUA

    IvanUA Гуру

    Ну к примеру как то так
    [​IMG]

    или так

    [​IMG]

    Такие шрифты я использовал в этом проекте



    Если подходят, то можете спокойно перенести их себе в часики
     
    Последнее редактирование: 23 мар 2018
  14. Karas8628

    Karas8628 Нерд

    Спасибо,будем разбираться)
     
  15. Sandr

    Sandr Гик

    Добрый день IvanUA ! Давно слежу за вашими поделками.
    Перепробовал почти все ваши часы.У всех есть свои прелести и недостатки.
    В версии 5.21 заметил такой глюк не обновляются показания погоды, причём всё вроде работает . Точки в углах не моргают. и часы вроде бы работают. Просто я стал наблюдать по барометру. И собрал простенькие часы по этой ссылке http://psenyukov.ru/?p=455#more-455 ., которые парсят данные и выводят их бегущей строкой. Сопоставляя значения двух часов тут я заметил что значения разные на простеньких они меняются а на Ваших нет , не меняют значения.Хотя в Ваших часах заложен большой потенциал контроля. Но где то что то не так.
    Что самое интересное если нажимаю кнопку в браузере обновить сейчас то они обновляются нормально . В скетче вроде всё прописано что каждые 15 и 45 минут получать данные о погоде. Почему не обновляется не понятно. И этим страдают все ваши проекты. ну или почти все. В 4 версии у той не обновляется день недели. пока не перезагрузишь.А у самой красивой 9 версия раздражает незначащий 01:00, у неё вообще часы отстают за неделю на 15 минут. Ну вот такие у меня наблюдения. Сам я не программист только благодаря вашим поделкам начал заниматься. В свободное время изучением. Ну под себя по мелочам подправляю, кое что. а так нет. В возрасте тяжеловато даётся. Память уже не та. А очень интересно пытаться что то изменить.
     
  16. Deniskyn

    Deniskyn Гик

    Странно.... собрано 5 часов (прошивка 5.21) описанных вами глюков не наблюдаю....

    ПС
    Перепроверьте монтаж, особенно питание ESPшки.
     
  17. IvanUA

    IvanUA Гуру

    Ну смотрите. Если у вас все ОК. И вы действительно каждые пол час получаете погоду, то при printCom >0...
    Вы должны в мониторе порта получать надпись "Getting weather forecast - is OK." и "Getting weather forecast for tomorrow - is OK."
    Причем дважды (для двух городов).
    При этом старые значения переменных weatherString и weatherStringZ будут заменены новыми полученными данными.
    Соответственно в переменные, которые хранят данные о погоде будут записаны новые данные
    weatherStringCity1 = weatherString + weatherStringZ;
    weatherStringCity2 = weatherString + weatherStringZ;

    Ну и собственно переменные-индикаторы будут указывать что процедура получения погоды прошла без ошибок. Если бы были ошибки, то часы бы каждую новую минуту пытались получить достоверные данные. Если совсем плохо то через 4 часа на экране бы вы увидели надпись о том что прогноз очень устарел и не обновлялся более 4-х часов.

    Что происходит именно в вашем случае, я увы не могу подсказать. Может железо, может софт не корректно компилируется на вашем компе, а может и как то не совсем корректно с вашим железом+софтом работает ваш ключ к серверу погоды.

    Если хотите проверить, то я вижу это только так: взять новую плату, залить в нее прошивку на другом ПК и использовать другой ключ к погодному сервер. Если ничего не изменится, то в скетче ставить кучу "маркеров" и смотреть что там происходит.

    ПС. По идее софт - должен легко проверяться заливкой бинарника...
     
    Последнее редактирование: 24 мар 2018
  18. IvanUA

    IvanUA Гуру

    Понимаете в чем вещь. Каждую процедуру в скетче сопровождают секунды - как бы поясняя когда она должна выполняться. В виду того что ардуино не умеет работать в многопоточном режиме, а такие процедуры как измерение температуры или запрос погоды - являются очень длительными... и если их выполнять во время вывода часов - то вы бы видели замирание мигания точек.... По этому я попытался так рассчитать время начала работы этих процедур (когда есть статическая "картинка") что бы не было видно что часы подвисают......

    Когда вы в браузере вручную пробуете обновить погоду, то естественно что часы без всяких условий даже в ущерб выводу времени останавливают все, и начинают процедуру получения погоды... Иногда даже чтение веб страниц - притормаживают мигание точек в часах.
     
    Последнее редактирование: 25 мар 2018
  19. mrcotek

    mrcotek Нерд

    подскажите как в коде подправить что бы правильно выводилось для 6-ти матриц?
     
  20. IvanUA

    IvanUA Гуру

    Нужно или вычистить все что связанно с MQTT
    или закомментировать все обращения к
    // reconnect();