Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Простые WiFi часы

Тема в разделе "Другие проекты", создана пользователем voldemar2005, 13 апр 2016.

  1. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    В планах сделать "поминальник" - он же элемент управления "календарь" - чтобы в бегущей строке к примеру отображались дни рождения, праздники, и тд.
    Я делал компиляцию для WiseClock (один канадский проект) - в нем много чего такого есть - можно позаимствовать.
    По идее можно сделать текстовый файл с сообщениями - а редактировать его уже ч/з веб-морду
     
  2. loginkr

    loginkr Новичок

    Сообщения:
    18
    Симпатии:
    0
    Только вот не могу понять , если выключить 'сервер погоды', то вы выключаете веб интерфейс, та и вообще все... и соответственно больше зайти в настройки нельзя, приходится заново загружать конфиг
    Зачем ?
     
  3. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    Изначально было так;). (Посмотрите оригинальные часы в этой теме) Вай фай запускался по кнопке (и щас так-же - кнопку подержите 5 сек - он запустится) и отключался за ненадобностью через минуту неактивности. В оригинале вайфай нужен изредка - только для настройки каких то параметров через вебморду. Когда проект "вырос" до клиент-серверного появилась необходимость держать вайфай постояноо включеным.
     
  4. loginkr

    loginkr Новичок

    Сообщения:
    18
    Симпатии:
    0
    Вместо кириллицы кракозябры, и между цифрами часов нет пробела. В какую сторону копать?
     
  5. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    В adafruit gfx заменить. Опосля перед компиляцией обязательно рестартануть дурину - она могет либы из кеша подгружать. Сам недавно наступил на эти грабли - гфикс обновилась, я файлик поздно поменял - попрыгать пришлось.
     

    Вложения:

    • glcdfont.c
      Размер файла:
      8,3 КБ
      Просмотров:
      16
    Последнее редактирование: 26 май 2017
    loginkr нравится это.
  6. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    Последнее редактирование: 28 июн 2017
  7. demman

    demman Новичок

    Сообщения:
    7
    Симпатии:
    0
    Доброго времени суток всем.
    Скачал архив, прошил, всё супер.
    Появилось несколько вопросов:
    - хотелось малость раздвинуть цифры от середины к краям матриц. Видимо это где-то в show_time, но вот где? Или придется править шрифт и весь вывод?
    - возможно-ли убрать незначащий ноль в десятках часов?
     
  8. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    А чей архив? Оригинальный или мой?
     
  9. demman

    demman Новичок

    Сообщения:
    7
    Симпатии:
    0
    Опс. Сорри. С 1-й страницы.
     
  10. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    Да там все в шоу тайм. Гашение нуля - сточку hour/10 надо заменить на пустой символ (byte) 0x0 если час == 0
    width_razd = 2; - это расстояние между символами
     
  11. demman

    demman Новичок

    Сообщения:
    7
    Симпатии:
    0
    Спасибо. С нулём разобрался. Может и не кошерно, но работает. 0x0B - код символа ПРОБЕЛ в шрифте.
    Раскрыть Спойлер
    Код (C):
    1.  
    2. if (ds3231.Hour / 10 == 0 ) {
    3.      dig[0] = byte( 0x0B);
    4.     } else {
    5.     dig[0] = ds3231.Hour / 10;
    6.     }
    7.  


    Судя по экспериментам - это количество мигающих точек. При значении 1 это :, при 2 это ::, при 3 это :::
    А я хотел добавить пробелов (пустых столбцов) между цифрами.
     
  12. Pilnikov

    Pilnikov Активный участник сообщества

    Сообщения:
    300
    Симпатии:
    26
    Попробуйте изменить ширину шрифта. Добавить единичку к используемому width_font. Я наискось глянул - походу сделано через формирование строки - а потом она выводится на экран целиком. (Прогу писал уважаемый @voldemar2005, поэтому я, как не автор, могу и ошибаться)
     
  13. voldemar2005

    voldemar2005 Авторитетный участник сообщества

    Сообщения:
    60
    Симпатии:
    53
    Попробуйте в 197 строке написать:
    Код (Text):
    1. if ( count_dig == 6) str32 <<= 1;
    2. else str32 <<= 2;
    я проверить не могу, доступ к часам будет только в понедельник.
     
  14. demman

    demman Новичок

    Сообщения:
    7
    Симпатии:
    0
    Если я Вас правильно понял, то:
    Раскрыть Спойлер
    Код (C):
    1.  
    2.         if ( cur_dig != NULL && (cur_dig[poz] & cur_mask)) str32 |= 1;
    3.       }
    4. //      str32 <<= 1;
    5.      if ( count_dig == 6) str32 <<= 1;   // <<<<<<<<<<<<<<<<<<<<<
    6.        else str32 <<= 2;                 // <<<<<<<<<<<<<<<<<<<<<
    7.     }
    8.     str32 <<= add_shift;
    9.  

    Показания съехали влево. Фотку прилагаю.
    Я пробовал добавлять шестой пустой столбец к шрифту. И выглядит это как-то некузяво :) Фотка 2.
    В итоге вернул всё назад.
    Шрифт тот-же что и в скетче, только я убрал "жирность" поэтому появилась пустая нижняя строка. Да и фиг с ней.
    В идеале хочется добавить по пустому столбику перед и после мигающих точек. Если можно конечно.
     

    Вложения:

    • Photo_1.jpg
      Photo_1.jpg
      Размер файла:
      585,3 КБ
      Просмотров:
      45
    • Photo_2.jpg
      Photo_2.jpg
      Размер файла:
      586,8 КБ
      Просмотров:
      40
  15. voldemar2005

    voldemar2005 Авторитетный участник сообщества

    Сообщения:
    60
    Симпатии:
    53
    ну тогда попробуйте заменить код со 145 строки на:
    Код (Text):
    1.         str32 <<= 1;
    2.         for ( int poz = 0; poz < width_razd; poz++)
    3.         {
    4.           str32 <<= 1;
    5.           if ( points && (str == 1 || str == 2 || str == 5 || str == 6)) str32 |= 1;
    6.         }
    7.         str32 <<= 2;
    8.  
     
    demman нравится это.
  16. demman

    demman Новичок

    Сообщения:
    7
    Симпатии:
    0
    Спасибо большое. Работает.
     

    Вложения:

    • Photo_3.jpg
      Photo_3.jpg
      Размер файла:
      577 КБ
      Просмотров:
      40
  17. demman

    demman Новичок

    Сообщения:
    7
    Симпатии:
    0
    Всем привет.
    Попытался добавить еще один уровень яркости.
    В Clock5web изменил:
    Раскрыть Спойлер
    Код (C):
    1. uint16_t    brightness_level[6]; // число уровней для автояркости - было 5
    2.  
    3. и в секции //------------------ set_brightness
    4.  
    5.     int level;
    6.     for ( int8_t i = 6; i > 0; i--)     // <<<<<  было i = 5
    7.     {
    8.  

    В скетче "eeprom" добавил:
    Раскрыть Спойлер
    Код (C):
    1.   eeprom_data.brightness_level[5] = 450;

    В скетче "web" добавил:
    Раскрыть Спойлер
    Код (C):
    1.  str += "<tr><td colspan='2'>Порог 5</td><td><input type='text' maxlength='4' size='3' id='brd5' name='brd5' value='";
    2.   str += eeprom_data.brightness_level[5];
    3.   str += "' /></td></tr>\n";
    4.  
    5. и в секции //----------------------- handleSetParam
    6.  
    7. eeprom_data.brightness_level[0] = 0;
    8.   for( uint8_t i = 1; i <= 5; i++)  // <<<<< изменил 4 на 5
    9.   {
    10.  

    Поле в вебе появляется со значением 450. Но при любых изменениях с сохранением из веба - поле принимает значение 1 и на перезапись не реагирует.
    Я что-то видимо пропустил?
     
  18. voldemar2005

    voldemar2005 Авторитетный участник сообщества

    Сообщения:
    60
    Симпатии:
    53
    в структуре
    Код (Text):
    1. struct eeprom_data_t
    увеличить размер массива:
    Код (Text):
    1. uint16_t    brightness_level[6];
    и в модуле web в районе 105 строки сделать:

    Код (Text):
    1. brd1=document.getElementById('brd1').value;\n\
    2. brd2=document.getElementById('brd2').value;\n\
    3. brd3=document.getElementById('brd3').value;\n\
    4. brd4=document.getElementById('brd4').value;\n\
    5. brd5=document.getElementById('brd5').value;\n\
    6. ...
    7. url='/set_param?tzone='+tzone+'&abrd='+abrd+'&brd='+brd+'&brd1='+brd1+'&brd2='+brd2+'&brd3='+brd3+'&brd4='+brd4+'&brd5='+brd5+'&antp='+antp+'&hntp='+hntp+'&stim='+stim;\n\
    8.  
     
    Последнее редактирование: 12 июл 2017
  19. demman

    demman Новичок

    Сообщения:
    7
    Симпатии:
    0
    Спасибо. Последние исправления помогли.
    Видимо в этой конструкции:
    Раскрыть Спойлер
    Код (C):
    1. int level;
    2.     for ( int8_t i = 6; i > 0; i--)     // <<<<<  было i = 5
    3.     {
    4.       if( i == cur_brightness) level = eeprom_data.brightness_level[i] - 20;
    5.       else if( i == cur_brightness+1) level = eeprom_data.brightness_level[i] + 20;
    6.       else level = eeprom_data.brightness_level[i];
    7.      DEBUG_MSG( "i=%d, foto=%d, level=%d\n", i, foto, level);
    8. ....
    9.  
    тоже нужно что-то изменить, т.к. в мониторе:
    i=6, foto=748, level=-18
    переменная foto реагирует на свет, а level так и остается и яркость не регулируется :(
     
  20. loginkr

    loginkr Новичок

    Сообщения:
    18
    Симпатии:
    0
    Добрый день
    Подскажите как реализовать работу nrf24l01 с max72xx ?
    По отдельности работает.
    GitHub - loginkr/ESP8266_Firmware
     

Поделиться этой страницей