Радиомодуль RF-5V (Прием данных)

Serg2018
Offline
Зарегистрирован: 08.02.2018

Здравствуйте. К Arduino UNO Подключем Радиомодуль RF-5V.   3,3 вольта, дата в RX , когда передаю что то , то светодиод TX горит, значит поступают данные, а считать немогу. дайто пожалуйста скетч

 

mag155
Offline
Зарегистрирован: 21.12.2017

Всем привет. Тема связи по радиоканалу очень даже актуальна но не где не могу найти ответ на вопрос . Как сделать так чтоб при обрыве сигнала передатчика приемник переставал выполнять задачу и к примеру машинка останавливались. Прошу помощи спасибо.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

mag155, Вы что издеваетесь. Если бы ваша машинка спросила, то ответил ей, пусть она спросит на форуме. Но Вы же не ваша машинка, у Вас должен быть ум.

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:
Всем привет. Тема связи по радиоканалу очень даже актуальна но не где не могу найти ответ на вопрос . Как сделать так чтоб при обрыве сигнала передатчика приемник переставал выполнять задачу и к примеру машинка останавливались. Прошу помощи спасибо.

Согласен с qwone - вообще думать разучились.

Очевидно же - если приемник в течении 1-2 сек не получает команд с передатчика - значит связь прервалась, тормозим.

5N62V
Offline
Зарегистрирован: 25.02.2016

mag155 пишет:
Всем привет. Тема связи по радиоканалу очень даже актуальна но не где не могу найти ответ на вопрос . Как сделать так чтоб при обрыве сигнала передатчика приемник переставал выполнять задачу и к примеру машинка останавливались. Прошу помощи спасибо.

вот как я когда-то делал:

передатчик передает , ну например значение канала газа, для простоты в пределах 1го байта, а именно в диапазоне 1...255.  1-минимум, 255 - максимум.

Приемник принимает это значение, или не принимает ничего, если связь отсутствует. Таким образом формируется признак наличия связи между пультом и приемником: если принятый быйт ==0  - связь отсутствует, если 1...255 - связь присутствует.   Если связь пропала - то там уже реализовуются сценарии: остановка, возврат, движение по кругу, поезка за пивом, и т.д.

То есть важно разделять события есть управление и нет управления. Но это когда Вы по-взрослому беретесь делать управление все свое. А когда Вы пользуетесь покупными средствами управление, то для начала надо разобраться как они работают. А именно как в них реализован алгоритм Fail Safe.

mag155
Offline
Зарегистрирован: 21.12.2017
#include <RCSwitch.h>
const int led1Pin = 3;
bool led1On;

RCSwitch mySwitch = RCSwitch();
RCSwitch mySwitch1 = RCSwitch();
void setup() {
  led1On = false;

   pinMode(led1Pin, OUTPUT);

   pinMode( 4, OUTPUT );
    mySwitch1.enableReceive(0);
    mySwitch.enableReceive(0);

}

void loop() {
    if( mySwitch.available() ){
        int value = mySwitch.getReceivedValue();
 
        if( value == B1000) digitalWrite( 3, HIGH );
            
     else if( value == B0100 )digitalWrite( 3, LOW );
            
  
 
        mySwitch.resetAvailable();
  
    if( mySwitch1.available() )
        int value = mySwitch1.getReceivedValue();
 
  if( value == B1001 )
            digitalWrite( 4, HIGH );
        else if( value == B1100 )
            digitalWrite( 4, LOW );
        mySwitch.resetAvailable();

}
    }

Есть вот такой скетч смысл в том что если передаем 1001 диод горит если 1100 не горит но если связь потеряна то приемник выполняет последнее действие тоесть горит. Да и просьба супер мега умных программеров не писать Согласен с qwone - вообще думать разучились. И тому подобное . Просьба к тем хто реально готов помочь подскажите ???

5N62V
Offline
Зарегистрирован: 25.02.2016

mag155 пишет:

Да и просьба супер мега умных программеров не писать Согласен с qwone - вообще думать разучились. И тому подобное 

Супер мега умные программеры, они на то и мега умные программеры, чтобы давать мега умные советы. А уж если Вы их понять не в состоянии, то это в первую очередь Ваша проблема, которую надо признать, ну и работать над ней.

А пока посоветовал бы Вам вывести переменную value в монитор порта, чтобы понимать, а что же Вам приходит из приемника. А потом уже условия городить.

mag155
Offline
Зарегистрирован: 21.12.2017

Я понимаю что на то они и умные но зачем так не лесной отзывается о новичках .

mag155
Offline
Зарегистрирован: 21.12.2017

Поясните что вы имеете в виду .Ведь если приемник приймит сигнал на включение и прервется радиосвязь он не отключится пока не прийдет сигнал на отключение.

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

Поясните что вы имеете в виду .Ведь если приемник приймит сигнал на включение и прервется радиосвязь он не отключится пока не прийдет сигнал на отключение.

вы мало того что думать не умеете - так еще и с чтением проблемы.

Вам же написали - посылайте с передатчика сигнал раз в секунду - независимо от того, есть новая команда или нет. Если приемник не получает сигнала, скажем, 2-3 сек - все, связь оборвана, все выключаем и останавливаемся.

И что тут непонятно?

mag155
Offline
Зарегистрирован: 21.12.2017

Примерчик в студию а то я так тоже умею.

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

Примерчик в студию а то я так тоже умею.

Вы меня, вроде - на слабо решили развести? :) умеете - так делайте сами

mag155
Offline
Зарегистрирован: 21.12.2017

Нет просто логику работы я понял хотел чтоб вы пример уравнения показали чтоб мне было от чего отталкиватся. Так что если не сложно напишите ?

mag155
Offline
Зарегистрирован: 21.12.2017

Не понятно вот что передатчик допустим передает 1. приемник принимает и они находятся постоянно на связи если связь потеряна как передать приемнику например 0?

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

Не понятно вот что передатчик допустим передает 1. приемник принимает и они находятся постоянно на связи если связь потеряна как передать приемнику например 0?

Маг, вы не маг, вы какой-то ...  простите. Вы когда по мобильнику разговариваете и связь прерывается - вы потом час ждете что вам другой абонент скажет в трубке "связь оборвалась" или все-таки сами догадываетесь по отсутсвию звука? :))))

Написал вам было код... но вижу что он пока будет вам бесполезен... тут все серьезнее... вы простейших вещей не понимаете. Вам надо мозги тренировать.  Наверняка вы не очень их напрягаете в реальной жизни, если вас такие элементарные вещи в тупик ставят. Попробуйте выучить какой-нибудь иностранный язык, что ли...

mag155
Offline
Зарегистрирован: 21.12.2017

Как же понять простые вещи если вы не обясняете а только критикуете . Написали бы код а книму пояснение я бы и понял . 

mag155
Offline
Зарегистрирован: 21.12.2017

или мой бы подправили код

mag155
Offline
Зарегистрирован: 21.12.2017

А ржать с людей которые пока только учатся все равно что обижать школьников, удел слабых мира сего.

mag155
Offline
Зарегистрирован: 21.12.2017

А по поводу телефона вобще вас не понял строка кода 22 это вкл и пока не будет строка 24 не будет и выкл дак как ему ждать час пока абонент что то скажет или догадатся что надо выполнить строку 24.

b707
Offline
Зарегистрирован: 26.05.2017

ну ты тупо-о-ой... (с)

выкладываю код - все равно уж написал, не пропадать же :) - сделано на примере твоего кода из #5. Для одного пина, второй - выкинул для простоты.

Пока не поймешь, что и зачем и как работает - вопросы больше не задавай.

void loop() {
static unsigned long prevMillis;
    if (millis() - prevMillis > 2000 ) {  // если с приема предыдущей команды прошло больше 2 сек
        digitalWrite( 3, LOW );           // выключаем диод
        prevMillis = millis(); 
     }
    if( mySwitch.available() ){
        int value = mySwitch.getReceivedValue();
 
        if( value == B1000) digitalWrite( 3, HIGH );
        else if( value == B0100 ) digitalWrite( 3, LOW );
        mySwitch.resetAvailable();
        prevMillis = millis();
     }
     
 
}

 

mag155
Offline
Зарегистрирован: 21.12.2017

Это я еще тупой Вы на сибя посмотрите вы пишите что после приема команды ждем 2 секунды и тушим диод а нужно если команда не поступала 2 секунды тогда тушим диод

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

mag155 пишет:

Это я еще тупой

Ты тупой и наглый БАРАН!

Тебе уже и код выложили , а ты , гафнюк ,еще и возникаешь.

mag155
Offline
Зарегистрирован: 21.12.2017

Я ни кого не оскарблял зашел на форум вежливо а если всякое быдло в ответ срет то ... Да и кстати код не правильный при удержании кнопки диод будет просто моргать

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:

Да и кстати код не правильный при удержании кнопки диод будет просто моргать

Раз мигает - значит нифига ты не понял.

я ж сказал - пока не поймешь - ничего не пиши. А ты куда вылез?

5N62V
Offline
Зарегистрирован: 25.02.2016

mag155 пишет:

Поясните что вы имеете в виду .Ведь если приемник приймит сигнал на включение и прервется радиосвязь он не отключится пока не прийдет сигнал на отключение.

Нужно не только прочесть, но и подумать над тем, что было сказано. Вам B707 уже рассказал алгоритм работы, но вы этого не заметили. 

Чтобы контролировать, есть связь или нет связи, команду управления надо передавать РЕГУЛЯРНО, например каждую секунду. То есть передавать команду на включение светодиода раз в секунду. Выключение светодиода должно происходить в двух случаях:

1) от пульта пришла команда на выключение

2) в течении , например, 3х секунд НЕ пришла команда на включение. Если она не пришла в течении 3х секунд, то это и есть критерий потери связи. Следовательно приемник должен дать команду на выключение. 

Так понятно?

mag155
Offline
Зарегистрирован: 21.12.2017

Дак там все понятно когда поступила первая команда ждем 2 секунды и тушим диод а когда удерживаем кнопку программа работает циклично диод Моргает.Как я понимаю нужно считать 2 секунды после того как команда перестанет поступать.

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:
Как я понимаю нужно считать 2 секунды после того как команда перестанет поступать.

"2 секунды после того как поступила последняя команда" и "2 секунды после того как команда перестала поступать" - ЭТО ОДНО И ТОЖЕ.

Если мигает - уверен, что ты неправильно вставил мой код в скетч. Выложи свой скетч целиком.

mag155
Offline
Зарегистрирован: 21.12.2017
void loop() {
  static unsigned long prevMillis;
    if (millis() - prevMillis == 2000 ) {  // если с приема предыдущей команды прошло больше 2 сек
        digitalWrite( 3, 0);           // выключаем диод
        prevMillis = millis();

     }
     
     int value = mySwitch.getReceivedValue();
    if( mySwitch.available() ){
   


         
         if( value == B1000) digitalWrite( 3, HIGH );
          
       else if( value == B0100 )  digitalWrite( 3, LOW );
         
        mySwitch.resetAvailable();
  
    if( mySwitch1.available() )
        int value = mySwitch1.getReceivedValue();
 
  if( value == B1001 )
            digitalWrite( 8, HIGH );
        else if( value == B1100 )
            digitalWrite( 8, LOW );
        mySwitch.resetAvailable();

}
    }
   

Пожалуйста

mag155
Offline
Зарегистрирован: 21.12.2017
#include <RCSwitch.h>
const int led1Pin = 3;


RCSwitch mySwitch = RCSwitch();
RCSwitch mySwitch1 = RCSwitch();
void setup() {


   pinMode(3, OUTPUT);

   pinMode( 8, OUTPUT );
    mySwitch1.enableReceive(0);
    mySwitch.enableReceive(0);
     
}

 

b707
Offline
Зарегистрирован: 26.05.2017

ну молодец :) Где 13-ая строка из моего кода? - потерял?

Выкини пока код для второго диода. Возьми мой код как есть, вставь вместо своего loop() НИЧЕГО НЕ МЕНЯЯ. И убедись. что диод на пине 3 работает как надо.

Потом попробуй повторить эту же штуку на второй пин.

mag155
Offline
Зарегистрирован: 21.12.2017

Кусок не скопировался 

5N62V
Offline
Зарегистрирован: 25.02.2016

9 и 10 строчку логичнее местами поменять

5N62V
Offline
Зарегистрирован: 25.02.2016

делит

mag155
Offline
Зарегистрирован: 21.12.2017

Да прошу прошения( за Это я еще тупой Вы на сибя посмотрите вы пишите что после приема команды ждем 2 секунды и тушим диод а нужно если команда не поступала 2 секунды тогда тушим диод) Моя вина.

mag155
Offline
Зарегистрирован: 21.12.2017

Кстати помехозащищенный приемник передатчик на 433 не посоветуете?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

mag155 пишет:

Кстати помехозащищенный приемник передатчик на 433 не посоветуете?

Посоветую тебе убиться об стену - может, одним наглым быдлом станет меньше, и мир повеселеет, хоть чуть-чуть.

Logik
Offline
Зарегистрирован: 05.08.2014

Как вы с Новичком говорите! Не хамите, а быренько схему набросайте, да ссылки на магазин сюда. И главное,  четко, лучше цветом, выделите откуда и докуда ему копировать, чтоб не было как с кодом! И поторопитесь, надо успеть пока b707 код доработает.

ПС. Некоторых прибывающих на форум надо сразу просто молча пиз.еть. А потом пусть уже спрашивают как им моргать светодиодом.

 

mag155
Offline
Зарегистрирован: 21.12.2017

И пожелаю я в двойне всего чего желаете вы мне.

mag155
Offline
Зарегистрирован: 21.12.2017

Это если здоровьице позволит, а то можно и в ответ отгрести не хило.

b707
Offline
Зарегистрирован: 26.05.2017

когда ж тебе прийдет сигнал на отключение, в двойне не лесный новичек

словарик русского языка купи....

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Напоминает эту тему #17  mag155 он "спортсмен". Ему друзья программы пишут, ну разумеется те кто спортом не увлекаются. А почему? Потому что спортсмену головой думать не надо. А надо "бегать да так что бы рубашка было мокрой и пахла" https://www.youtube.com/watch?v=w7c9Z8eP42M

mag155
Offline
Зарегистрирован: 21.12.2017

С языком проблема с телефона пишу а там этот словарь .

mag155
Offline
Зарегистрирован: 21.12.2017

А тебе, друг мой gwone, не надо напрягать и без того недоразвитые мускуленки, ты тренеруй дальше свою большую голову, висящую на дохленькой шейке и очки! протирать не забывай. А всем кто помогал конечно благодарочка.

b707
Offline
Зарегистрирован: 26.05.2017

mag155 пишет:
С языком проблема с телефона пишу а там этот словарь .

А-а, теперь все понятно. То-то я смотрю - иногда пишешь как грамотный, а иногда как последний второгодник. Видимо такие слова, как "циклично" и "приемник-передатчик" - это из словарика, а "прийдет", "пишите" (вместо пишете), "не где" вместо нигде - это твои личные,  без словаря?

Если ты живешь в России - учи русский. Потраченное время окупится.

(если ты не из РФ - вопросов нет)

SpectrumZX
Offline
Зарегистрирован: 10.07.2016

mag155 пишет:
А тебе, друг мой gwone, не надо напрягать и без того недоразвитые мускуленки, ты тренеруй дальше свою большую голову, висящую на дохленькой шейке и очки! протирать не забывай. А всем кто помогал конечно благодарочка.

Уже и гопники к ардуино потянулись.....На зоне была амнистия недавно?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

SpectrumZX пишет:
Уже и гопники к ардуино потянулись.....На зоне была амнистия недавно?
Скорее слет шахматистов. Шахматисты опаснее особенно после шахматного матча.https://www.youtube.com/watch?v=M6wa9qkb1tI

ПС: И для того что бы заниматься Ардуиной нужно крепкое здоровье и ... огромные кулаки что бы доказать что скетч работает правильно. :)

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Этот как раз из тех, каво 3 раза из ПТУ выгоняли за неуспеваемость. Наконец-то я его вживую увидел. Если не тролль, канеш.

mag155
Offline
Зарегистрирован: 21.12.2017

Ну судя по твоему правописанию тебя выгоняли не меньше .

mag155
Offline
Зарегистрирован: 21.12.2017

Вы б так помогать рвались как всякой херней чат засираете

Штирлиц
Штирлиц аватар
Offline
Зарегистрирован: 13.06.2015

mag155 пишет:
Вы б так помогать рвались как всякой херней чат засираете

И толпа ломанулась один вперед другого на помощь.Каждому из ломанувшихся невтерпеж получить ушат говна от ТС.

mag155
Offline
Зарегистрирован: 21.12.2017

Всем доброго времени суток !!! Такой вопрос хочу победить функцию 

millis.

И как - то сложновато, кому не сложно напишите пример типа задержка вкл диода и распишите где что. Буду благодарен.