Главный файл
В главном файле скетча Arduino Mega Server находятся, в основном, настройки и функции инициализации и работы системы. Рассмотрим подробнее основные настройки Arduino Mega Server, находящиеся в этом файле.
Debug
В систему встроен отладочный и профилирующий код, который необходим в процессе разработки и не нужен в готовой сборке. Для управления (включения или отключения) этим кодом применяется механизм макросов и директив условной компиляции. Комментированием код отключается, а убиранием комментирования — включается.
// debug //#define ELECTRO_DEBUG //#define SERVER_PROFILING //#define EVENTS_CONTACTS //#define EVENTS_PIRS //#define TEMP_DEBUG
Подключение библиотек
Далее идёт секция подключения библиотек, необходимых для работы системы. Все библиотеки поставляются в составе дистрибутива Arduino Mega Server и не требуют дополнительных настроек.
Единственное исключение состоит в том, что если вы используете Ethernet Shield 2, то вам нужно закомментировать секцию W5100 и раскомментировать секцию W5500 (для подключения соответствующих библиотек).
#include <avr/pgmspace.h>
#include <SPI.h>
// W5100
#include <Ethernet.h>
#include <EthernetUdp.h>
// W5500
//#include <Ethernet2.h>
//#include <EthernetUdp2.h>
#include <SD.h>
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
Одиночный или тандемный режим
Нормальным для системы является одиночный режим работы и он установлен по умолчанию. Тандемный режим работы в связке с сервером MajorDoMo может понадобиться только для разработки и включить его можно здесь же, присвоив переменной modeNetWork
значение MODE_MAJOR
или прямо «на лету» в интерфейсе Arduino Mega Server (в меню «Настройки»).
// mode net work byte const MODE_ONE = 1; byte const MODE_MAJOR = 2; byte modeNetWork = MODE_ONE;
Источник синхронизации времени
Здесь выбирается источник синхронизации времени — синхронизация через сеть с серверами точного времени (локальными или Интернет) или синхронизация со встроенными часами реального времени (RTC). По умолчанию выбрана синхронизация через сеть.
// time provider byte const TIME_NONE = 0; byte const TIME_NETWORK = 1; byte const TIME_RTC = 2; byte timeProvider = TIME_NETWORK;
Режим сетевой работы
Нормальным режимом работы Arduino Mega Server является режим с одним свободным сокетом, который установлен по умолчанию. В случае, если вы пользуетесь только интерфейсом AMS и не используете другие сетевые функции, вы можете включить т. н. «форсированный» режим с захватом всех сокетов FREE_SOCKETS_ZERO
. Это немного ускорит работу интерфейса (но перестанут работать сетевые функции).
// free sockets byte const FREE_SOCKETS_ZERO = 0; byte const FREE_SOCKETS_ONE = 1; byte const FREE_SOCKETS_TWO = 2; byte freeSockets = FREE_SOCKETS_ONE;
Режим работы сервер/загрузка
Это выбор режима работы «Сервер» (нормальный режим) или «Update» — режим загрузки контента при помощи утилиты Arduino Serial Commander (на время включения этого режима работа сервера блокируется).
// mode work byte const MODE_SERVER = 1; byte const MODE_UPDATE = 2; byte modeWork = MODE_SERVER;
Дизайн сайта
Здесь устанавливается значение переменной currentDesign
, определяющий внешний вид и функционал сайта AMS. Во время работы системы этой переменной можно присваивать разные значения, тем самым изменяя внешний вид интерфейса Arduino Mega Server.
// design byte const DEFAULT_DESIGN = 0; byte const HOME_DESIGN = 1; byte const MODERN_DESIGN = 2; byte const HACKER_DESIGN = 3; byte const PART1_DESIGN = 4; byte const PART2_DESIGN = 5; byte const PART3_DESIGN = 6; byte const PART4_DESIGN = 7; byte currentDesign = DEFAULT_DESIGN;
Идентификаторы страниц
Иногда требуется сделать специальные настройки для какой-либо страницы. Для этой цели служат предустановленные идентификаторы страниц.
// pages byte const UNKNOWN_PAGE = 0; byte const THEMES_PAGE = 4; byte const SETTINGS_PAGE = 5; byte const PORTS_PAGE = 6; byte const SUPPLY_PAGE = 7; byte const ELECTRO_PAGE = 8; byte currentPage = UNKNOWN_PAGE;
Установки таймеров
Здесь определяются переменные таймеров и устанавливается их начальное значение false
(таймер не сработал).
// timers unsigned long timeSec; // time in seconds unsigned long timer1s; boolean cycle1s = false; unsigned long timer4s; boolean cycle4s = false; unsigned long timer20s; boolean cycle20s = false; unsigned long timer30s; boolean cycle30s = false; unsigned long timer1m; boolean cycle1m = false; unsigned long timer3m; boolean cycle3m = false; unsigned long timer5m; boolean cycle5m = false; int startSendTime = 10;
Обратите внимание. Система Arduino Mega Server непрерывно развивается и в код проекта постоянно вносятся изменения и улучшения, поэтому, описание и документация может не соответствовать вашей конкретной версии системы. Последняя правка этой страницы относится к 0.14 версии системы.