чтобы не плодить темы, задам здесь вопрос. Скетч "палкаподнималка" я так понимаю и для приема, и для передачи, и чтобы глушить. Хочу только принимать при помощи этого скетча, а передатчик собирать на другой плате. Опять же вопрос по скетчу: в интернете нашел много разных скетчей, пытаюсь "залить" полученный при помощи "палкиподнималки" код, но при запуске ардуины-приемника я ничего не принимаю от ардуины-передатчика. В чем может быть проблема?
Вариантов много), из них: 1 - код; Отправлять нужно поднималкой, а не другим скетчем. Тот который не ловит и не отправит. 2 - железо.
Да по железу там вопросов не должно быть, вроде. плюс,минус, дата и все. Антенну припаял. Отправлять нужно поднималкой - не понял? Т.е. если я узнал нужный мне код, мне же не нужно постоянно сканировать приемником, я хотел сделать на ардуино-мини+передатчик который бы отдельно от палкиподнималки только передавал, не считывал, не глушил))
Поднималка - программа написанная под конкретную задачу. Она Умеет принимать наш код, умеет отправлять. Нужно просто сделать из нее две разных программы для себя, вырезав все лишнее) Она, на удивление, очень простая, лаконичная и хорошо прокомментирована.
вот код, который "заработал". Только мне не совсем понятно, как полученный мною код в 16ти ричной системе передать так, чтобы мой приемник его в итоге увидел как он и был - 16ти ричным кодом. В виде букв, я так понимаю, передавать будет неправильно, пробовал в двоичном коде - получается тоже ерунда (скрин прилагаю). Подскажите, пожалуйста, как правильно передавать буквенно-цифровой код, чтобы приемник его правильно воспринимал? Код (C++): int send_code_pin = 13; long send_code = 111010110110000100110110001010111101111010111010000011000100111010110110000100110110001010111101111010111010000011000100; // (EB61362BDEBA0C4) - этот двоичный код определенный методом перебора для моего шлагбаума void setup() { pinMode(send_code_pin, OUTPUT); } void loop () { for (int j = 0; j <7; j++) // достаточно 4-х, но из-за помех поставил 7 { digitalWrite(send_code_pin, HIGH); // стартовый импульс delayMicroseconds(700); digitalWrite(send_code_pin, LOW); for (int i = 12; i > 0; i--) { boolean bit_code = bitRead(send_code, i - 1); if (bit_code) { digitalWrite(send_code_pin, LOW); // единица delayMicroseconds(1400); digitalWrite(send_code_pin, HIGH); delayMicroseconds(700); } else { digitalWrite(send_code_pin, LOW); // ноль delayMicroseconds(700); digitalWrite(send_code_pin, HIGH); delayMicroseconds(1400); } } digitalWrite(send_code_pin, LOW); // пилотный период delayMicroseconds(25200); } delay(10000); // задержка вместо кнопки }
Передача по любому двоичная. Соотв, что в передатчик отправить, то он и передаст, то он и примет. А что принимать (и фиксировать/отображать, а не отбрасывать) и отправлять - вопрос алгоритма. В оригинале плакаподнималка, и другие программы, просто декодирует двоичный и отображает его, помимо того что сначала определяет кодировку. Но передает опять же в двоичном. Приведенный скетч может отправить двоичный код указанный в программе, но не факт, что стартовые биты, задержки между битами (миллисекунды в алгоритме) и тп соответствуют пульту, который планируется симулировать.
Можно засечь двоичный код нескольких разных кнопок что бы определить стартовые биты, и прописать их в приведенный пример, остальные цифры записать в переменную, а задержки определить опытным путем, найти в инете на этот пульт или определить самостоятельно. А еще в приведенном коде отправляется только 12 бит и не хватает функции bitRead)
Прошу помочь.... Сразу говорю только учусь..... Можно в личку написать... Кнопки на отправку и глушилку как понял только .. подключаются к 7 и 8 пину соответственно через резистор 10 кОм. (по схеме указанной в приложении) ???? И второй вопрос после отключения питания пойманый код сохраняется?
Но учтите , что записать туда можно 100 тысяч раз, потом еепром износится и помрёт. Так же можно и на следующей карту писать