Помогите с ретранслятором на 433 Мгц
- Войдите на сайт для отправки комментариев
Пнд, 23/04/2018 - 01:44
Всем привет, подскажите пожалуйста, будет ли работать такой скетч в качестве ретранслятора радиопередачи на 433Мгц? Или поправьте пожалуйста что не так в коде. Дело в том, что из помещения через стену, сигнал пульта плохо доходит на улицу до шлагбаума. Думаю ретранслятор с антенкой 17см должен достать через стену.
[code] #include <RCSwitch.h> RCSwitch mySwitch = RCSwitch(); int led = 13; void setup() { mySwitch.enableReceive(0); // приёмник на 2 mySwitch.enableTransmit(5); //передатчик на 5 pinMode(led, OUTPUT); pinMode(led, HIGH); } void loop() { unsigned long recive = mySwitch.getReceivedValue(); if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) { } else { if (recive == 1234567, 24 ) { //передаём digitalWrite(led, LOW ); mySwitch.send(1234567, 24); } } mySwitch.resetAvailable(); } } [/code]
А эта строчка что делает?
Ну и 15 и 16 строки в странном порядке стоят.
Ну а еще надо обратить внимание на частотный разнос приемника и передатчика, либо же разносить прием/передача по времени, причем в Вашем случае прерывания во время передачи надо запрещать.
Спасибо за поддержку, код исправил, частоту разнёс. Думаю должно работать. А как запретить на время прерывание, если на одной частоте? Через flag?
я почему спросил про ту строчку, я ни разу не встречал, чтоб так писали. Операторы, знаю, разделять запятыми можно, а тут что - не понятно. Но компилятор не ругается.
Чтоб запретить прерывания на момент передачи можно сделать так:
Не помню где взял этот кусок
if
(recive ==
Туда поставил запрет прерывания? ))
Не помню где взял этот кусок
if
(recive ==
Сергей, если вы еще не поняли, то насчет "этой строчки" это был не вопрос, а намек - в ней написан бред. Работать оно не будет (во всяком случае не так, как вы ожидаете)
Да, спасибо, я потом понял что это моя не внимательность )) Спасибо вам за помощь и подсказку.
Не помню где взял этот кусок
if
(recive ==
Туда поставил запрет прерывания? ))
Туда :) Только задержка 2сек - это как-то жирно :))) Я конечно не знаю что у Вас там за передавайчики используются, но , имхо, и 20мсек должно хватить.
Типа такого, ну да, с такой задержкой он и сам забудет что далал )))))
https://ru.aliexpress.com/item/1pair-2pcs-433mhz-rf-transmitter-and-rece...
Да, спасибо, я потом понял что это моя не внимательность )) Спасибо вам за помощь и подсказку.
А откуда Вы знаете, как он ожидает?
я почему спросил про ту строчку, я ни разу не встречал, чтоб так писали. Операторы, знаю, разделять запятыми можно, а тут что - не понятно. Но компилятор не ругается.
Почему не ругается? Предупреждение по идее должен выдать. Они у Вас в IDE выключены? Включите - полезно.
А вообще, конструкция вполне законная, только бессмысленная. 100% эквивалентна
if
(recive == 24 )
100% эквивалентна
if
(recive == 24 )
а не if(24); ? Не совсем понятно каким образом 24 к переменной recive относится в том выражении?
В IDE всё включено. Ошибок небыло. Я слизал код , потом исправил под себя, а эту строчку как то пропустил, да и другое не так воткнул )). Проверить на железе небыло возможности.
1234567 код., 24 это bit. А про задержку. это шутка, пользователь пульта быстрей забудет что нажал )) Тут другой вопрос. Не могу отканировать пульт на 433 от шлагбаума. Другие пульты пожалуйста, даже doorhan отсканировал, а тут Итальянский попался, производитель уверяет что 443мгц. Может не в скетче а в железе искать ответ?
Значит не всё. Было бы всё, было бы сообщение
warning: left operand of comma operator has no effect [-Wunused-value]
По умолчанию (из коробки) предупреждения в IDE выключены. Если Вы их специально не включали, значит - не включено.
а не if(24); ? Не совсем понятно каким образом 24 к переменной recive относится в том выражении?
Да, конечно, виноват, бес попутал.
Проверю. Спасибо за совет. Нужная опция.
Ну, Сергей, мы можем поговорить только о том, что видим. Вот код - видим, обсуждаем кто во что гаразд. А пульт, сорри.... :)
Значит не всё. Было бы всё, было бы сообщение
warning: left operand of comma operator has no effect [-Wunused-value]
По умолчанию (из коробки) предупреждения в IDE выключены. Если Вы их специально не включали, значит - не включено.
Я тут про ошибки в IDE. Не правильный скетч ошибок не даёт. Где посмотреть? Вот мой скрин.
И ещё, я бы создал тему относительно скетчам скана кодов для разных пультов. Разные пульты, разные скетчи и библиотеки, разные приёмники.
Как говорится, частота 433Мгц даже в африке не 433Мгц.
Сергей Р,
зачем Вы выложили скрин с настроками, если сами на него даже не смотрели?
А если смотрели, то неужели 7-ая строка в которой выбрано "Сообщения компилятора: Ничего" Вас не насторожила? Выберите там "всё" и будете получать много полезной ругани (предупреждений)