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

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

?

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

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

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

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

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

    IvanUA Гуру

    В коде где процедура получения погоды замените вот этот кусок
    Код (C++):
        // ---------- 47 cек. оновлюємо прогноз погоди -------------------------------------
        if(forecastView && (cityID1 != "0" || cityID2 != "0")) {
          if(second == 47 && secFr == 0 && (minute == 15 || minute == 45 || updateForecastCity1 != 0 || updateForecastCity2 != 0) || weaterUpdate == true) {
            Serial.println("Poluczenie pogody!!");
            if((updateForecastCity1 != 0 || minute == 15 || minute == 45 || weaterUpdate == true) && cityID1 != "0") {
              Serial.println("Dla goroda 1");
              cityID = cityID1;
              getWeatherData();
              getWeatherDataz();
              if(updateForecast == 0) {
                updateForecastCity1 = 0;
              } else updateForecastCity1++;
              if(updateForecastCity1 > 239) {
                weatherStringCity1 = "Нема прогнозу для Міста #1 більше 4-х годин!";
              } else weatherStringCity1 = weatherString + weatherStringZ;
            }
            if((updateForecastCity2 != 0 || minute == 15 || minute == 45 || weaterUpdate == true) && cityID2 != "0") {
              Serial.println("Dla goroda 2");
              cityID = cityID2;
              getWeatherData();
              getWeatherDataz();
              if(updateForecast == 0) {
                updateForecastCity2 = 0;
              } else updateForecastCity2++;
              if(updateForecastCity2 > 239) {
                weatherStringCity2 = "Нема прогнозу для Міста #2 більше 4-х годин!";
              } else weatherStringCity2 = weatherString + weatherStringZ;
            }
            //if(!MQTTclient.connected()) reconnect();
            weaterUpdate = false;
          }
    Если все условия выполняются то то в моменты получения погоды в 15 и 45 минут в монитре порта будут надписи
    Poluczenie pogody!!
    Dla goroda 1
    Dla goroda 2
     
  2. Kesik

    Kesik Нерд

    Для отображения времени для 6-и матриц, нужно приплюсовать 8 ко всем подчеркнутым значениям на картинке - если просто подвинуть. Если растянуть - тогда методом научного тыка :) . Для 8-ми матриц я прибавил 16.
     

    Вложения:

    Последнее редактирование: 25 мар 2018
  3. igor777ivan

    igor777ivan Нерд

    Подскажите, может кто сталкивался с таким багом: в скетче в том месте где идет конвертация с английского на русский - else if(weatherDescription == "sky is clear") weatherDescription = " ясное небо "; у меня указано - ясное небо, а при работе устройства на экран выводится надпись - ясно. Вопрос куда подевалось слово - небо? При этом словосочетание "ясно" во всей программе используется только в этой строке. Проверил на компьютере все файлы папки с ARDUINO - словосочетание "ясно" нигде не встречается кроме как в этом скетче, поэтому на комп грешить не приходится. Пробовал вносить изменения в вышеуказанный скетч и перепрошивать устройство- все меняется без проблем кроме слова "ясно". Менял " ясное небо " на " ясн " - опять выводится " ясно". Перепрошивал прошивку NODEMCU на родную и чистил нулевым бланком - все без толку. заливал прошивку на украинском языке - и там на индикатор выдает "ясно". Уже голова кипит - подскажите что это?
     
  4. IvanUA

    IvanUA Гуру

    String weatherLang = "en";
    Если вы поставили ru, то конвертация работать не будет.
     
  5. igor777ivan

    igor777ivan Нерд

  6. IvanUA

    IvanUA Гуру

    Да.
     
  7. igor777ivan

    igor777ivan Нерд

    Иван, спасибо! А ларчик просто открывался :) Век живи - век учись.
     
  8. igor777ivan

    igor777ivan Нерд

    Может быть кому-то пригодится то, как я решил обозначать температуру в доме. Соответственно температура на улице обозначается только плюсом или минусом.
     
  9. igor777ivan

    igor777ivan Нерд

    [​IMG]
     
    IvanUA, Fedoss и Slaiterx нравится это.
  10. igor777ivan

    igor777ivan Нерд

  11. Slaiterx

    Slaiterx Гик

    Это на сколько матриц
     
  12. Fedoss

    Fedoss Нерд

    А можно скетч?
     
  13. igor777ivan

    igor777ivan Нерд

    Прошивка от Fedoss из поста #693 для одного города и на 5 матриц, надо только файл fonts.h поменять для вывода температуры. Если нужен переделанный fonts.h - позже скину.
     
    Fedoss нравится это.
  14. Fedoss

    Fedoss Нерд

    Это не мой скетч, он с первого поста.;)
     
  15. igor777ivan

    igor777ivan Нерд

    Переделка в файле fonts.h, входящего в скетч для нового обозначения температуры в доме и на улице
    const uint8_t dig5x8rn[] PROGMEM = { 6,
    0x05, 0x7E, 0x81, 0x81, 0xFF, 0x7E, //0
    0x05, 0x04, 0x02, 0xFF, 0xFF, 0x00, //1
    0x05, 0xF1, 0x89, 0x89, 0x8F, 0x86, //2
    0x05, 0x81, 0x89, 0x89, 0xFF, 0x76, //3
    0x05, 0x1F, 0x10, 0x10, 0xFE, 0xFE, //4
    0x05, 0x8F, 0x89, 0x89, 0xF9, 0x71, //5
    0x05, 0x7E, 0x89, 0x89, 0xF9, 0x70, //6
    0x05, 0x01, 0xC1, 0xF1, 0x3F, 0x0F, //7
    0x05, 0x76, 0x89, 0x89, 0xFF, 0x76, //8
    0x05, 0x0E, 0x91, 0x91, 0xFF, 0x7E, //9
    0x02, 0x03, 0x03, 0x00, 0x00, 0x00, //градус
    0x05, 0x7E, 0x81, 0x81, 0xc3, 0x42, // C
    0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, //.
    0x05, 0xC4, 0x92, 0xB9, 0x92, 0xC4, // DOM +
    0x05, 0xC4, 0x92, 0x91, 0x92, 0xC4, // DOM - (ХОТЯ, КАКОЙ МИНУС МОЖЕТ БЫТЬ ДАМА?)
    0x05, 0x00, 0x10, 0x38, 0x10, 0x00, // ULICA +
    0x05, 0x00, 0x10, 0x10, 0x10, 0x00, // ULICA -
     
  16. igor777ivan

    igor777ivan Нерд

    А в самом скетче надо подвигать позиции при выводе температуры. Вот уже подвинутые:

    //========== ВЫВОД НА ЭКРАН ТЕМПЕРАТУРЫ В ДОМЕ ========================================
    void showSimpleTemp(){ //
    dx=dy=0; //
    clr(); //
    showDigit((t1<0?14:13), 0, dig5x8rn); //
    if(t1<=-10.0||t1>=10) showDigit((t1<0?(t1*-1)/10:t1/10), 7, dig6x8); //
    showDigit((t1<0?(t1*-1)%10:t1%10), 14, dig6x8); //
    showDigit(12, 21, dig5x8rn); //
    showDigit(t2, 23, dig6x8); //
    showDigit(10, 30, dig6x8); //
    showDigit(11, 35, dig6x8); //
    refreshAll(); //
    } //
    //========== ВЫВОД НА ЭКРАН ТЕМПЕРАТУРЫ НА УЛИЦЕ ========================================
    void showSimpleTempU(){ //
    dx=dy=0; //
    clr(); //
    showDigit((t3<0?16:15), 0, dig5x8rn); //
    if(t3<=-10.0||t3>=10) showDigit((t3<0?(t3*-1)/10:t3/10), 5, dig6x8); //
    showDigit((t3<0?(t3*-1)%10:t3%10), 12, dig6x8); //
    showDigit(12, 19, dig5x8rn); //
    showDigit(t4, 21, dig6x8); //
    showDigit(10, 30, dig6x8); //
    showDigit(11, 35, dig6x8); //
    refreshAll(); //
    }
     
  17. igor777ivan

    igor777ivan Нерд

    Эту процедуру можно проделать для любого скетча Ивана.
     
  18. yrbas

    yrbas Нерд

    Столкнулся с проблемой-часы почему то стали показывать время на час вперёд:confused:(посмотрел через веб-настройки не сбиты, часовой пояс и.т.д. выставлены верно).Поставил время в часовом поясе на час меньше-пока показывает правильно. Что может быть? Или забить на это-типа работает-не лезь:)
     
  19. big_alex

    big_alex Гик

    Вы предыдущий пост читали?
     
  20. yrbas

    yrbas Нерд

    Ага- всё разобрался;)