// Данный пример меняет адрес модуля на указанный в переменной «i».                                         //  
#define delay(A) usleep(A*1000)                                                                             //		
#include <iostream>                                                                                         //  
#include <stdint.h>
#include "iarduino_I2C_Relay.h"                                                                             //  Подключаем библиотеку для работы с реле и силовыми ключами.

uint8_t i = 0x09;                                                                                           //  Назначаемый модулю новый адрес (0x07 < адрес < 0x7F).
                                                                                                            //
iarduino_I2C_Relay relay;                                                                                   //  Объявляем объект relay для работы с функциями и методами библиотеки iarduino_I2C_Relay.
                                                                                                            //  Если при объявлении объекта указать адрес, например, relay(0xBB), то пример будет работать с тем модулем, адрес которого был указан.
int main(){                                                                   	                            //
    delay(500);                     std::cout << "На шине I2C ";                             		        //
    if( relay.begin() ){            std::cout << "найден модуль с адресом 0x";                     		    //  Инициируем работу с модулем реле или силовыми ключами.
                                    std::cout << std::hex << int(relay.getAddress());                       //  Выводим текущий адрес модуля.
                                    std::cout << ", который является ";                               	    //
        switch( relay.getModel() ){                                                                     	//  Сравниваем модель модуля с константами:
            case DEF_MODEL_2RM:     std::cout << "электромеханическим реле на 2-канала";           break;   //
            case DEF_MODEL_4RT:     std::cout << "твердотельным реле на 4-канала";                 break;   //
            case DEF_MODEL_4NC:     std::cout << "силовым ключом на 4 N-канала с измерением тока"; break;   //
            case DEF_MODEL_4PC:     std::cout << "силовым ключом на 4 P-канала с измерением тока"; break;   //
            case DEF_MODEL_4NP:     std::cout << "силовым ключом на 4 N-канала до 10A";            break;   //
            case DEF_MODEL_4PP:     std::cout << "силовым ключом на 4 P-канала до 10A";            break;   //
            default:                std::cout << "неизвестным силовым ключом или реле";                     //
        }                           std::cout << ".\n";                                                   	//
        if(relay.changeAddress(i)){ std::cout << "Адрес модуля изменён на 0x";                              //  Меняем адрес модуля на указанный в переменной i.
                                    std::cout << std::hex << int(relay.getAddress());                       //  Выводим текущий адрес модуля.
                                    std::cout << " и сохранён в flash память модуля.";                      //  Выводим текущий адрес модуля.
        }else{                      std::cout << "Адрес модуля изменить не удалось!";                       //  Если метод relay.changeAddress() вернул false, значит библиотеке не удалось сменить адрес модуля.
        }                                                                                      				//
    }else{                          std::cout << "нет ни силовых ключей, ни реле!" ;                        //  Если метод relay.begin() вернул false, значит библиотеке не удалось найти модуль реле или силовых ключей.
    }                               std::cout << "\n";                                                   	//
}																																																						//                                                                                                          
