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

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

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

  1. anderswels

    anderswels Новичок

    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте. Есть ли у вас вариант часов без сегментных индикаторов,давления, но с выводом даты и дня недели в виде бегущей строки? Или можно так сделать на заказ?
     
  2. DmKorneev

    DmKorneev Новичок

    Сообщения:
    2
    Симпатии:
    0
    Подскажите, скачал файл прошивки, распаковал. В папке много файлов. В программе Ардуино при открытии одного файла открываются все. Так и должно быть?.
    При попытке компиляции, среда ругается на

    Arduino: 1.6.12 (Windows 7), Плата:"Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"

    In file included from C:\time\Clock5_160924\clock5web\Clock5web.h:1:0:

    Clock5web.h:46: error: 'IPAddress' was not declared in this scope

    time_t getNtpTime( IPAddress &timeServerIP);

    ^

    Clock5web.h:46: error: 'timeServerIP' was not declared in this scope

    time_t getNtpTime( IPAddress &timeServerIP);

    ^

    Clock5web.h:47: error: variable or field 'sendNTPpacket' declared void

    void sendNTPpacket(IPAddress &address);

    ^

    Clock5web.h:47: error: 'IPAddress' was not declared in this scope

    Clock5web.h:47: error: 'address' was not declared in this scope

    void sendNTPpacket(IPAddress &address);

    ^

    ntp:35: error: 'time_t getNtpTime(IPAddress&)' redeclared as different kind of symbol

    time_t getNtpTime( IPAddress &timeServerIP)

    ^

    In file included from C:\time\Clock5_160924\clock5web\Clock5web.h:1:0:

    Clock5web.h:46: error: previous declaration of 'time_t getNtpTime'

    time_t getNtpTime( IPAddress &timeServerIP);

    ^

    C:\time\Clock5_160924\clock5web\ntp.ino: In function 'bool get_ntp_time()':

    ntp:19: error: 'getNtpTime' cannot be used as a function

    unsigned long t_ntp = getNtpTime( arrTimeServerIP);

    ^

    C:\time\Clock5_160924\clock5web\ntp.ino: In function 'time_t getNtpTime(IPAddress&)':

    ntp:35: error: 'time_t getNtpTime(IPAddress&)' redeclared as different kind of symbol

    time_t getNtpTime( IPAddress &timeServerIP)

    ^

    In file included from C:\time\Clock5_160924\clock5web\Clock5web.h:1:0:

    Clock5web.h:46: error: previous declaration of 'time_t getNtpTime'

    time_t getNtpTime( IPAddress &timeServerIP);

    ^

    exit status 1
    'IPAddress' was not declared in this scope

    Этот отчёт будет иметь больше информации с
    включенной опцией Файл -> Настройки ->
    "Показать подробный вывод во время компиляции"
     
    Последнее редактирование: 10 окт 2016
  3. voldemar2005

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

    Сообщения:
    60
    Симпатии:
    52
    да, так и должно быть.

    Папка "clock5web" с файлами должна находится в каталоге который указан в настройках IDE: "Размещение папки скетчей".
     
  4. voldemar2005

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

    Сообщения:
    60
    Симпатии:
    52
    нет, такой вариант я не делал ...
     
  5. DmKorneev

    DmKorneev Новичок

    Сообщения:
    2
    Симпатии:
    0
    Скомпилировалось все, ошибки возникали под Windows 10
    Под linux и Windows 7 все в норме
     
    Последнее редактирование: 11 окт 2016
  6. anderswels

    anderswels Новичок

    Сообщения:
    2
    Симпатии:
    0
    А могли бы сделать? За отдельную благодарность.
     
  7. Evgeniy163

    Evgeniy163 Читатель

    Сообщения:
    33
    Симпатии:
    7
    Здравствуйте. Обнаружил не совсем корректное отображение температуры вблизи нуля и минус, т.е если температура 0.2 то показывает "00.", последний символ пустой. Если т- (-2), то показывает "F0", последниу символ так же пустой. Часы, конечно комнатные, но может кто то захочет вынести датчик на улицу. Я не программист, но не много подправил код только для MATRIX. Вроде работает.
    код (раскрыть)

    Код (Text):
    1.  
    2.   int32_t t1 = celsius * 100;
    3.   t1 /= 100;
    4.   if( t1 < 0)
    5.   {
    6.   #ifdef MATRIX
    7.   t1 *= -1;
    8.   if (t1/10 == 0)
    9.   {  
    10.   tempC[0] = NULL; //dig7[16];
    11.   tempC[1] = dig7[16]; //dig7[t1 / 10];
    12.   tempC[2] = dig7[t1 % 10];
    13.   }
    14.   else
    15.   {
    16.   tempC[0] = dig7[16];
    17.   tempC[1] = dig7[t1 / 10];
    18.   tempC[2] = dig7[t1 % 10];
    19.   }
    20.   #else
    21.   tempC[0] = 0x0a;
    22.   tempC[1] = t1 / 10;
    23.   tempC[2] = t1 % 10;
    24.   #endif
    25.   }
    26.   else
    27.   {
    28.   #ifdef MATRIX
    29.   if (t1/10 ==0)
    30.   {tempC[0] = NULL;}
    31.   else
    32.   {tempC[0] = dig7[t1 / 10];}
    33.   tempC[1] = dig7[t1 % 10] | 0x80;
    34.   t1 = (celsius - t1) * 10;
    35.   tempC[2] = dig7[t1];
    36.   #else
    37.   tempC[0] = t1 / 10;
    38.   tempC[1] = (t1 % 10) | 0x80;
    39.   t1 = (celsius - t1) * 10;
    40.   tempC[2] = t1;
    41.   #endif
    42.   }
    43.  
    44.  
     
    Последнее редактирование: 3 ноя 2016
    voldemar2005 нравится это.
  8. chief

    chief Новичок

    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте. Вопрос к ТС: на сколько актуален скетч первого поста? При его компиляции Arduino IDE (1.6.12) выдает ошибку "...\Clock5web.ino:29:23: fatal error: Clock5web.h: No such file or directory", при этом скетч поста #37 компилируется и работает отлично.
     
  9. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
    @chief имя папки скетча измените. Нужна первая заглавная буква, как у скетча. Должно компилировать нормально после этого.
     
    chief нравится это.
  10. chief

    chief Новичок

    Сообщения:
    5
    Симпатии:
    0
  11. Zelezyka

    Zelezyka Новичок

    Сообщения:
    5
    Симпатии:
    0
    Здравствуйте. Отличный проект, работает. Спасибо.
    Хочу добавить управление GPIO через браузер. Подскажите как это можно сделать.
     
  12. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
    @Zelezyka в общем случае - добавить кнопку в html и добавить обработчик кнопки в код. Посмотрите, как я реализовал будильник и как автор. Если уловите разницу - будет просто.
     
  13. Zelezyka

    Zelezyka Новичок

    Сообщения:
    5
    Симпатии:
    0
    это мне понятно, но как это сделать? можете помочь? у меня не получается.
     
  14. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
    @Zelezyka помочь могу, делать за Вас - не буду.
    Что не получается? Что Вы пробовали и как? Где Ваш код?
     
  15. Zelezyka

    Zelezyka Новичок

    Сообщения:
    5
    Симпатии:
    0
    Во вкладке WEB :
    str += "<tr><td colspan='3' class='h'><button onclick='digitalWrite( 4, HIGH);'>GPIO4</button></td></tr>\n";
     
  16. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
    и как это должен исполнить браузер? Это нужно в обработчик запроса ставить.
     
  17. Сергей_Ф

    Сергей_Ф Moderator Команда форума

    Сообщения:
    2.198
    Симпатии:
    227
    @Zelezyka
    в web.ino надо добавить в строку function функцию JavaScript для обработки нажатия кнопки, она будет дергать URL /GPIO так:
    Код (Text):
    1. \
    2. function switch_GPIO(){\n\
    3. request=new XMLHttpRequest();\n\
    4. request.open('GET', '/GPIO', true);\n\
    5. request.send();\n\
    6. }\n\
    7. \
    8.  
    добавить обработчик запроса URL:
    Код (Text):
    1. //-------------------------------------------------------------- handleGPIO
    2. void handleGPIO()
    3. {
    4.   serv_ms = millis(); // это для внутреннего использования в программе часов
    5.   digitalWrite( relay_GPIO, !digitalRead (relay_GPIO)); // меняем состояния Пина на противоположенное
    6.   DEBUG_MSG( "Set GPIO%d %d\n", relay_GPIO, digitalRead (relay_GPIO)); // отладочный вывод
    7.   HTTP.send(200, "text/html", ""); //посылка ответа сервера
    8. }
    9.  
    добавить например в конец void handleTime() перед
    str += html_end();
    Сам код кнопки в http:
    Код (Text):
    1.   str += "<tr><td colspan='3' class='h'><button onclick='switch_GPIO();'>GPIO</button></td></tr>\n";
    2.  
    в основном Clock5web.ino добавить название и номер Пина, который дергать:
    Код (Text):
    1.  #define relay_GPIO ВАШ_НОМЕР_ПИНА //13
    в setup() определить режим Пина и присвоить обработчик URL для соответствующего адреса запроса:
    Код (Text):
    1.   pinMode( relay_GPIO, OUTPUT);
    2.   HTTP.on( "/GPIO", handleGPIO);
    3.  
    4.  
    кажется всё. Тогда на странице Время внизу будет кнопка GPIO для вызова JavaScript, который отправляет запрос на сервер esp, который вызывает обработчик страницы, а уже он переключает пин relay_GPIO.
     
    Последнее редактирование: 26 ноя 2016
    Olmiv и romvya нравится это.
  18. Zelezyka

    Zelezyka Новичок

    Сообщения:
    5
    Симпатии:
    0
    @Сергей_Ф
    Спасибо за помощь. Очень помогли.
     
  19. RedCat

    RedCat Новичок

    Сообщения:
    10
    Симпатии:
    0
    Приветствую благородных донов!
    Огромная благодарность ТС за работу! Собрал, подключил, доработал напильником - все работает. При работе через веб в iPad-ике с Сафари слетают длины окошек полей ввода (вернее отображаются так, как задано в скетче), при этом в WinХР на огнелисе все работает правильно (непонятно, хотя можно свернуть на магию браузеров). Подправил, если кому нужно - забирайте. Вопрос - каким заклинанием можно заставить часы показывать температуру? Или я так понимаю что у ТС показания времени и температуры разнесены по разным дисплеям? Использую только один дисплей TYPE_DISPLAY == 1. Может толкнете в сторону того, как заставить листать режимы (время -- температура -- время ....).
    В планах прикрутить москито с запросом температуры от уличного датчика опрашиваемого малинкой.
    Всем добра!
     

    Вложения:

    • web.ino
      Размер файла:
      24,9 КБ
      Просмотров:
      91
  20. voldemar2005

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

    Сообщения:
    60
    Симпатии:
    52
    да, именно так. Я просто считаю, что в любой момент посмотрев на часы я должен там увидеть время.

    ну проще всего в
    Код (Text):
    1. void show_time( bool shift)
    заполнять массив int dig[6] нужными числами. Эта процедура вызывается раз в 500мс, и на экран будут выводится цифры из этого массива ...
     
    RedCat нравится это.

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