ARDUINO Подскажите что не так

Статус
В этой теме нельзя размещать новые ответы.

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
Заголовок темы должен отражать содержимое. Переформулируй или тема будет удалена
Доброго времени суток. Есть ардуино Нано к ней подключен модуль беспроводной связи nRF24l01+ и 4 светодиода. И есть еще 4 ардуино нано с модулями связи. Смісл тот что при нажатии на каждом передатчике на прийомнике загорается светодиод и срабатівает сигнал. столкнулся с проблемой, работает только тот модуль который стоит на 1 месте в коде, остальные не работают
 

Вложения

  • 3.8 KB Просмотры: 8
  • Лойс +1
Реакции: Ванкувер

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
1) мало выложить приемник.
2) Проверь идут ли данные от других передатчиков - после выполнения условия if(radio.available(&pipe)){ выведи в сериал сообщения, что что -то пришло.
 

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
1) мало выложить приемник.
2) Проверь идут ли данные от других передатчиков - после выполнения условия if(radio.available(&pipe)){ выведи в сериал сообщения, что что -то пришло.
вот скретч передатчика, на остальных меняю только идентификатор и пин кнопки разный стоит. Дело в том что с первым передатчиком все работает, ставишь другой передатчик, назначаешь его первым тоже все работает, а тот который вторым и следующим стоит не работает ни в какую.
 

Вложения

  • 3.6 KB Просмотры: 1

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
Первое что увидел в приемнике такая конструкция:
C++:
if (radio.available(&pipe)) {
    radio.read( &recieved_data, sizeof(recieved_data) );         // чиатем входящий сигнал

    if (pipe == 1)
    {
      digitalWrite(2, recieved_data[0]); butt = recieved_data[0];
      if (butt == 1 && butt_flag == 0)
      {
        butt_flag = 1; analogWrite(buzzer, 100); //включаем звук
      }
    }
    if (radio.available(&pipe))
    {
        .. и тут для второй трубы.
    }
    ...
    ...
    ...
    }
И что у тебя получается ? если есть данные для приема, то ты их считываешь, если труба первая, то ты что то делаешь, а если не 1-ая ?
Потом опять смотришь есть ли данные. А откуда они возьмутся , если данные считаны 5-ю строчками выше ?
надо так
проверить есть ли данные.
если есть, то
{
считать данные и номер трубы
если труба 1, то делать то то
если труба 2, то делать то то
если труба 3, то делать то то
...
}

Но думаю , что ты меня не слушаешь. Я в 1-ом посте предложил тебе выводить в сериал то, что приходит на приемник. Ты это не сделал, иначе было бы очевидно где ошибся
 
  • Лойс +1
Реакции: DJTroll

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
Первое что увидел в приемнике такая конструкция:
C++:
if (radio.available(&pipe)) {
    radio.read( &recieved_data, sizeof(recieved_data) );         // чиатем входящий сигнал

    if (pipe == 1)
    {
      digitalWrite(2, recieved_data[0]); butt = recieved_data[0];
      if (butt == 1 && butt_flag == 0)
      {
        butt_flag = 1; analogWrite(buzzer, 100); //включаем звук
      }
    }
    if (radio.available(&pipe))
    {
        .. и тут для второй трубы.
    }
    ...
    ...
    ...
    }
И что у тебя получается ? если есть данные для приема, то ты их считываешь, если труба первая, то ты что то делаешь, а если не 1-ая ?
Потом опять смотришь есть ли данные. А откуда они возьмутся , если данные считаны 5-ю строчками выше ?
надо так
проверить есть ли данные.
если есть, то
{
считать данные и номер трубы
если труба 1, то делать то то
если труба 2, то делать то то
если труба 3, то делать то то
...
}

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

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
Первое что увидел в приемнике такая конструкция:
C++:
if (radio.available(&pipe)) {
    radio.read( &recieved_data, sizeof(recieved_data) );         // чиатем входящий сигнал

    if (pipe == 1)
    {
      digitalWrite(2, recieved_data[0]); butt = recieved_data[0];
      if (butt == 1 && butt_flag == 0)
      {
        butt_flag = 1; analogWrite(buzzer, 100); //включаем звук
      }
    }
    if (radio.available(&pipe))
    {
        .. и тут для второй трубы.
    }
    ...
    ...
    ...
    }
И что у тебя получается ? если есть данные для приема, то ты их считываешь, если труба первая, то ты что то делаешь, а если не 1-ая ?
Потом опять смотришь есть ли данные. А откуда они возьмутся , если данные считаны 5-ю строчками выше ?
надо так
проверить есть ли данные.
если есть, то
{
считать данные и номер трубы
если труба 1, то делать то то
если труба 2, то делать то то
если труба 3, то делать то то
...
}

Но думаю , что ты меня не слушаешь. Я в 1-ом посте предложил тебе выводить в сериал то, что приходит на приемник. Ты это не сделал, иначе было бы очевидно где ошибся
вот так получается?
if(radio.available(&pipe)){
radio.read( &recieved_data, sizeof(recieved_data) ); // чиатем входящий сигнал

if(pipe==1){digitalWrite(2, recieved_data[0]); butt = recieved_data[0];
if (butt == 1 && butt_flag == 0) {butt_flag = 1;analogWrite(buzzer, 100); //включаем звук
}
}
if(pipe==2){{digitalWrite(4, recieved_data[0]); butt = recieved_data[0];
Serial.print("Програма тута виконуэться");
if (butt == 1 && butt_flag == 0) {butt_flag = 1;analogWrite(buzzer, 100); //включаем звук
}
}

или опять что-то не так. В интернете все так пишуть, но так оно стояло но не работало
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
У приемника выведи pipe в монитор порта и смотри что получается при нажатии на разных передатчиках.
Ты знаешь где ошибка ? нет. Ошибка может быть в коде или в приеме /передаче. если при нажатии кнопки приходит информация на приемник от любого передатчика, то ошибка в обработке приема. Если не приходит передача от любого передатчика кроме 1-го, то ошибка в настройке связи.
 

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
У приемника выведи pipe в монитор порта и смотри что получается при нажатии на разных передатчиках.
Ты знаешь где ошибка ? нет. Ошибка может быть в коде или в приеме /передаче. если при нажатии кнопки приходит информация на приемник от любого передатчика, то ошибка в обработке приема. Если не приходит передача от любого передатчика кроме 1-го, то ошибка в настройке связи.
в мониторе порта только 1 есть. Я думаю что приемник забит только 1 и больше никого не слушает или я ожибаюсь? если 1 отключить то от остальных тищина
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,266
1,303
Москва
приемник не может быть забит, если не слать туда значения не переставая. А у тебя вроде бы идет по изменению.
Попробуй тот приемник, который работает поставить 2-ой трубой.
radio.openWritingPipe(AABBCCDD22LL); пойдет ли передача на ней ? будет ли 2? чуть позже соберу макет посмотрю
 

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
весь прикол в том что там происходить постояная отправка сообщений, даже если клавиша не нажата, не могу понять почему
 

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
приемник не может быть забит, если не слать туда значения не переставая. А у тебя вроде бы идет по изменению.
Попробуй тот приемник, который работает поставить 2-ой трубой.
radio.openWritingPipe(AABBCCDD22LL); пойдет ли передача на ней ? будет ли 2? чуть позже соберу макет посмотрю
radio.openWritingPipe(0xAABBCCDD22LL);
 

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
сменил местами, 1 и второй, тот что стал первым работает и постоянно забивает канал, второй не отвечает, если первый просто отключить то ничего не происходит и монитор порта молчит
 

DJTroll

✩✩✩✩✩✩✩
11 Июн 2020
10
1
проблему с забытым портом решил, но тоже, тот что ставишь 1 тот работает из остальных нет связи
 
Статус
В этой теме нельзя размещать новые ответы.