diff --git a/IR_Encoder.cpp b/IR_Encoder.cpp index 1f08a0a..cad54f2 100644 --- a/IR_Encoder.cpp +++ b/IR_Encoder.cpp @@ -1,7 +1,14 @@ #include "IR_Encoder.h" #include "IR_Decoder.h" -IR_Encoder::IR_Encoder(uint16_t addr, uint8_t pin, IR_Decoder* decPair) : ir_out(pin), addrSelf(addr), decoder(decPair) {}; +IR_Encoder::IR_Encoder(uint16_t addr, uint8_t pin, uint8_t tune = 0, IR_Decoder* decPair) { + ir_out = pin; + addrSelf = addr; + decoder = decPair; + carrierTune = tune; + halfPeriod = (carrierPeriod / 2) - carrierTune; + +}; IR_Encoder::~IR_Encoder() {}; void IR_Encoder::sendACK(uint16_t addrTo, uint8_t addInfo, bool forAll = false) { diff --git a/IR_Encoder.h b/IR_Encoder.h index d27133a..d6cac16 100644 --- a/IR_Encoder.h +++ b/IR_Encoder.h @@ -9,9 +9,10 @@ public: uint16_t addrSelf; private: bool prevPreambBit = true; // предыдущий бит преамбулы - + uint8_t carrierTune; + uint8_t halfPeriod; public: - IR_Encoder(uint16_t addr, uint8_t pin, IR_Decoder* decPair = nullptr); + IR_Encoder(uint16_t addr, uint8_t pin, uint8_t tune, IR_Decoder* decPair = nullptr); template void sendData(uint16_t addrTo, T& data, bool needAccept = false); diff --git a/IR_config.h b/IR_config.h index bb1d5ef..adbd4e4 100644 --- a/IR_config.h +++ b/IR_config.h @@ -2,6 +2,8 @@ #include /*////////////////////////////////////////////////////////////////////////////////////// +Для работы в паре положить декодер в энкодер + */// Адресация с 1 до 65 499 #define IR_Broadcast 6500 // 65 500 ~ 65 535 - широковещательные пакеты (всем), возможно разделить на 35 типов /* @@ -63,7 +65,7 @@ msg type: #define bytePerPack 3 // колличество байтов в пакете #define freeFrec true -#define carrierTune 4 +//#define carrierTune 4 #define preambPulse 3 // 8 для gyverCore // 4~5 для arduino nano @@ -92,10 +94,6 @@ typedef uint16_t crc_t; #define carrierFrec 38000U // частота несущей #define carrierPeriod (1000000U/carrierFrec) // период несущей в us - -#define halfPeriod ((carrierPeriod / 2) - carrierTune) //13 //8 // 14 при работе с регистрами, 14 -6 = 8 для digitalWrite() -const auto _x_ = halfPeriod; - // В процессе работы значения будут отклонятся в соответствии с предыдущим битом #define bitActiveTakts 25U // длительность единицы в тактах #define bitPauseTakts 6U // длительность нуля в тактах