RCSwitch и переменные

Тема в разделе "Проводная и беспроводная связь", создана пользователем bmbhs, 28 ноя 2016.

  1. bmbhs

    bmbhs Нуб

    Такая проблема сложилась, что я не могу найти описание библиотеки RCSwitch. Из-за этого никак не могу понять и разобраться, можно ли передать несколько переменных и принять по отдельности?
    Использую радиомодуль 433мгц
     
  2. rkit

    rkit Гуру

    Переменную по воздуху передать точно не получится. А несколько кодов - почему бы и нет.
     
    bmbhs нравится это.
  3. bmbhs

    bmbhs Нуб

    У меня стоит джойстик. С пинов А0(у) и А2(х) считываются показания и заносятся в переменные xPos и yPos. И вот эти две переменные мне нужно передать. Передам я их таким образом: mySwitch.send(xPos,20); mySwitch.send(yPos,20);
    Вот так я их передам, ладно. А как мне каждую принять по отдельности. Так как я не знаю команд библиотеки, то принимаю их вот так:
    if (mySwitch.available()){
    a = mySwitch.getReceivedValue();
    }
    И я не понимаю, как можно вытащить нужную мне переменную...
     
  4. rkit

    rkit Гуру

  5. bmbhs

    bmbhs Нуб

    Десятеричная система - 10 бит, так?

    Извиняюсь, если спрашиваю какие-то глупости. Не могу уже разобраться с работой этой библиотеки неделю. Такая каша в голове... Вот с VirtualWire разобрался, всё было прекрасно, но вот досада - она не работает с сервоприводом. Эх.
     
  6. rkit

    rkit Гуру

    Нет. Десять бит это десять бит. Система счисления внутри компьютерная всегда двоичная.
     
  7. bmbhs

    bmbhs Нуб

    Блин, тогда не понял. 1 символ = 1бит. Значит 10 бит = 10 символов, которые я могу передать?
     
  8. rkit

    rkit Гуру

    Нет. 1 бит это 1 бит. С аналоговых пинов получают 10 значимых бит информации, значит остальные нули можно не передавать.
     
  9. bmbhs

    bmbhs Нуб

    Получается, если с А0, например, считал значение 1023, то число будет 1023000000 или 0000001023?
     
  10. rkit

    rkit Гуру

    второе, если записывать в десятичной
     
  11. rkit

    rkit Гуру

    На плате, где int 32-х битный, разумеется.
     
  12. bmbhs

    bmbhs Нуб

    И мне нужно ставить 10 или я могу тогда 4 поставить, раз у меня самое большое число - четырёхзначное?
     
  13. rkit

    rkit Гуру

    10 бит. 4 десятичных знака.
    Надо указывать биты.
     
  14. bmbhs

    bmbhs Нуб

    Спасибо большое за то, что помогли разобраться и что так долго терпели моё незнание:)
     
  15. Novichok64

    Novichok64 Нуб

    Здравствуйте. Чтобы не плодить темы, спрошу здесь.
    Мне необходимо передать с пульта на модель по 433 МГц либо значения 2 переменных типа byte, либо 1 переменной типа int(лучше, если одной int).
    1) Можно ли передать int такой командой? Вообще позволяет ли библиотека работать с такими типами:
    #include <RCSwitch.h>
    RCSwitch mySwitch = RCSwitch();
    void setup()
    {
    mySwitch.enableTransmit(2);
    int rccomm1 = 12345678; //переменная для передачи
    }
    void loop()
    {
    mySwitch.send(rccomm1, 8); // непонятно по поводу 2 аргумента функции. Что за "размер" он означает.
    delay (200);
    }

    2) Если отправлять переменные int нельзя, тогда можно отправить так:
    .//.........

    byte rccomm1 = 11110000;
    byte rccomm2 = 00001111;
    void loop()
    {
    mySwitch.send(rccomm1, 8);
    mySwitch.send(rccomm2, 8);
    delay (200);
    }
    Таким образом пульт передает примерно 5 раз в секунду сообщения из 2 байтов.
    Как приемнику определить где rccomm1, а где rccomm2 ?

    P.S. Брал отсюда http://robotclass.ru/tutorials/arduino-radio-433mhz/ .
     
    Последнее редактирование: 1 дек 2016