В наличии: - приемник MX-RM-5V (есть два таких. купленных с промежутком в 1 год в разных магазинах). Поведение с обоими приемниками одинаковое. - Ардуино Нано подключение приемника на пин D2 ардуино. - Несколько пультов на частоте 433мгц, притом 4-ре внешне абсолютно одинаковые маркированы Came TOP 432NA. Все гарантированно рабочие. Есть еще несколько пультов. Часть из них работает с этим приемником, а часть нет. Хотя частоты у всех пультов одинаковые. Кодирование 12 и 24 бита Пробовал библиотеки RCSwitch и Gyver433 С библиотекой RCSwitch работает только один из этих пультов Came TOP 432NA, в этом и засада. Хочется, что бы все работали. А с библиотекой Gyver433 НИ один не работает!! Код с RCSwitch Код (C++): #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 } void loop() { if (mySwitch.available()) { Serial.print("Received "); Serial.print( mySwitch.getReceivedValue() ); Serial.print(" / "); Serial.print( mySwitch.getReceivedBitlength() ); Serial.print("bit "); Serial.print("Protocol: "); Serial.println( mySwitch.getReceivedProtocol() ); Serial.print("dlit: "); Serial.println( mySwitch.getReceivedDelay() ); mySwitch.resetAvailable(); } } Результат работы кода с библиотекой RCSwitch от двух работающих пультов. dlit — это вывод по функции mySwitch.getReceivedDelay() Received 2958 / 12bit Protocol: 11 dlit: 408 Received 2958 / 12bit Protocol: 11 dlit: 409 Received 3631464 / 24bit Protocol: 1 dlit: 326 Received 3631464 / 24bit Protocol: 1 dlit: 328 Код от Гайвера Код (C++): #include <Gyver433.h> Gyver433_RX<2, 20> rx; // указали пин и размер буфера void setup() { Serial.begin(9600); attachInterrupt(0, isr, CHANGE); // прерывание пина радио по CHANGE } // спец. тикер вызывается в прерывании void isr() { rx.tickISR(); } void loop() { if (rx.gotData()) { // если успешно принято больше 0 Serial.write(rx.buffer, rx.size); // выводим Serial.println(); } delay(50); // имитация загруженного кода } Еще пробовал такой код, но с ним толком не разобрался, путем манипуляций, смог убедится, что хоть что-то он может принять от неработающих с RCSwitch пультами. Но сам код распознать не смог. Привожу оригинал кода, с которым у меня вообще тишина. Свои манипуляции удалил. Код (C++): #define rxd 2 //задаем пин приемника #define delta 200 //задаем время для расброса времени посылаемого сигнала int metka2 = 0; // метка для подсчета чистого сигнала(что бы мусор не принимал) boolean metka = 0; // вторая метка для подсчета чистого сигнала unsigned int time, oldtime; //переменные для времени void setup() { pinMode(rxd, INPUT); //сделаем входом attachInterrupt(0, pinint, CHANGE); //настроим прерывание Serial.begin(115200); //скорость порта interrupts(); // активираем прерывания } void pinint() { if (digitalRead(rxd) == LOW) //значит приняли ноль { oldtime = micros(); //записали время } else { time = micros() - oldtime; //нходим время в котором был 0 или 1 if (constrain(time, 13400 - delta, 13400 + delta) == time)// если попадает 0 или еденица в интервал от 13200 до 13600 значит пришел стартовы бит и начнем считать саму посылку { metka = 1; //выставилм метки что бы понять что посылка кода пошла metka2 = 0; //выставилм метки что бы понять что посылка кода пошла } if (metka == 1 && metka2 <= 24 ) //значит метки совпадают начинаем читать сигналы { metka2++; //выставим что бы метка отсчитала 24 посылки "1" и "0", после 24 приходит мусор if (constrain(time, 1300 - delta, 1300 + delta) == time) //если пришла 1 запишем ее в функцию, там она напечатается в монитор { funkciya(1); } else if (constrain(time, 300, 500) == time) //если пришел 0 запишем его в функцию, там он напечатается в монитор { funkciya(0); } else if (constrain(time, 0, 300) == time) // если поймапли какой то мусор, сразу обрубаем чтение порта { metka = 0; metka2 = 25; } if ( metka2 == 25) //ну это для образовательных целей что бы видеть разрыв между посылками { Serial.println(""); Serial.println("OK"); Serial.println(""); } } } } void funkciya(int chislo) // сама функция выыода посылки но высылается по одному символу { Serial.println(chislo); } void loop() {} Помогите разобраться или версию, куда копать