Главный файл

В главном файле скетча 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 версии системы.