
Данная библиотека предназначена для работы с диммером, дает возможность управления большим количеством диммеров используя аппаратный таймер и внешние прерывания.
При использовании библиотеки стоит заранее ознакомится с таблицей задаваемых пинов.

*  ---------------------- OUTPUT & INPUT Pin table ---------------------
 *  +---------------+-------------------------+-------------------------+
 *  |   Board       | INPUT Pin               | OUTPUT Pin              |
 *  |               | Zero-Cross              |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Leonardo       | D7 (NOT CHANGABLE)      | D0-D6, D8-D13           |
 *  +---------------+-------------------------+-------------------------+
 *  | Mega          | D2 (NOT CHANGABLE)      | D0-D1, D3-D70           |
 *  +---------------+-------------------------+-------------------------+
 *  | Uno           | D2 (NOT CHANGABLE)      | D0-D1, D3-D20           |
 *  +---------------+-------------------------+-------------------------+
 *  | ESP8266       | D1(IO5),    D2(IO4),    | D0(IO16),   D1(IO5),    |
 *  |               | D5(IO14),   D6(IO12),   | D2(IO4),    D5(IO14),   |
 *  |               | D7(IO13),   D8(IO15),   | D6(IO12),   D7(IO13),   |
 *  |               |                         | D8(IO15)                |
 *  +---------------+-------------------------+-------------------------+
 *  | ESP32         | 4(GPI36),   6(GPI34),   | 8(GPO32),   9(GP033),   |
 *  |               | 5(GPI39),   7(GPI35),   | 10(GPIO25), 11(GPIO26), |
 *  |               | 8(GPO32),   9(GP033),   | 12(GPIO27), 13(GPIO14), |
 *  |               | 10(GPI025), 11(GPIO26), | 14(GPIO12), 16(GPIO13), |
 *  |               | 12(GPIO27), 13(GPIO14), | 23(GPIO15), 24(GPIO2),  |
 *  |               | 14(GPIO12), 16(GPIO13), | 25(GPIO0),  26(GPIO4),  |
 *  |               | 21(GPIO7),  23(GPIO15), | 27(GPIO16), 28(GPIO17), |
 *  |               | 24(GPIO2),  25(GPIO0),  | 29(GPIO5),  30(GPIO18), |
 *  |               | 26(GPIO4),  27(GPIO16), | 31(GPIO19), 33(GPIO21), |
 *  |               | 28(GPIO17), 29(GPIO5),  | 34(GPIO3),  35(GPIO1),  |
 *  |               | 30(GPIO18), 31(GPIO19), | 36(GPIO22), 37(GPIO23), |
 *  |               | 33(GPIO21), 35(GPIO1),  |                         |
 *  |               | 36(GPIO22), 37(GPIO23), |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Arduino M0    | D7 (NOT CHANGABLE)      | D0-D6, D8-D13           |
 *  | Arduino Zero  |                         |                         |
 *  +---------------+-------------------------+-------------------------+
 *  | Arduino Due   | D0-D53                  | D0-D53                  |
 *  +---------------+-------------------------+-------------------------+
 *  | STM32         | PA0-PA15,PB0-PB15       | PA0-PA15,PB0-PB15       |
 *  | Black Pill    | PC13-PC15               | PC13-PC15               |
 *  | BluePill      |                         |                         |
 *  | Etc...        |                         |                         |
 *  +---------------+-------------------------+-------------------------+

Использование данной библиотеки упрощает код пользователя при помощи функций:
    1. функция dimmerLamp. Данная функция инициализирует значение пина которое будет использоватся, задается пользователем

        а.Пример dimmerLamp dimmer(4);   диммер выход DIM/PSM инциализируется на пин 4 для плат, в которых пин Zero-Cros не переназначается (NOT CHANGABLE для AVR, SAMD)
        б.Пример dimmerLamp dimmer(4, 2);   диммер выход DIM/PSM инциализируется на пин 4 для плат, на которых Zero-Cross можно переназначать (ESP32, ESP8266, Arduino Due)

    2. функция begin - инициализация портов, таймера и внешнего прерывания от zero-cross.
    Пример dimmer.begin(NORMAL_MODE, ON); инициализация портов, выбор режима работы, вкл/выкл. 
    Параметр 1: Выбор режим работы диммера состоит из двух вариантов  NORMAL_MODE и TOGGLE_MODE 

        а. NORMAL_MODE работа диммера в заданном значении от 0 до 100 (%) (целочисленное)
            Пример работы режима находится в папке \RBDdimmer\examples\SimpleDimmer
        б. TOGGLE_MODE плавное изменение значения димминга увеличение и снижение в заданных границах. Данное решение построенно на изменении значения диминга за счет 
            аппаратного таймера и не использует код цикла.
            Пример работы режима находится в папке \RBDdimmer\examples\SimpleToggleDimmer

    Параметр 2: ON/OFF.
        a. ON - включение таймера, диммер использовать можно.
        a. OFF - выключение параметров для таймера, диммер использовать нельзя.

    3. Функция setPower установка значения димминга от 0 до 100%
        Пример dimmer.setPower(90);

    4. Функция getPower используется для того что бы получить текущее значение димминга
        Пример Serial.print(dimmer.getPower()); Result 0~100 int
   
    5. Функция setMode установка или изменение мода режимами работы (NORMAL_MODE и TOGGLE_MODE)
                dimmer.setMode(NORMAL_MODE/TOGGLE_MODE)

    6. Функция getMode полученние нынешнего значения режима работы 
        Пример Serial.print(dimmer.getPower());  Result 0 (NORMAL_MODE) or 1 (TOGGLE_MODE)
   
    7. Функция setState задет состояние димминга ON/OFF
        Пример dimmer.setState(ON); delay(100); dimmer.setState(OFF);
   
    8. Функция getState полученние нынешнего значения состояния диммера
        Serial.print(dimmer.getState()); Result 0 (OFF) or 1 (ON)
   
    9. Функция changeState изменяет состояние диммера на противоположное 
        Пример dimmer.setState(ON); delay(100); dimmer.changeState; delay(100);
  
    10. Функция toggleSettings плавное изменение значения димминга увеличение и снижение в заданных границах
        Пример находится в папке \RBDdimmer\examples\SimpleToggleDimmer
