нужна помощь

Ruslan soloduch
Offline
Зарегистрирован: 11.04.2019
добрый вечер .что исправить в коде приемника ?при потери связи остается работать последния задача ,а  хотелось бы чтоб прекрощалась выполнение кода 
?    -------------------------приемник ------------------
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Servo.h>

RF24 radio(9, 10); // "создать" модуль на пинах 9 и 10 Для Уно
//RF24 radio(9,53); // для Меги

byte recieved_data[12]; // массив принятых данных
byte relay61 = 6; 
byte relay51 = 5; 
byte relay = 2; 
byte relay1= 4;
byte relay3 = 7; 
byte mosfet = 8; 
byte relay4 = 14;
byte relay5 = 15;
byte relay6 = 16;
byte relay2 = 17;
byte relay7 = 18;
byte relay8 = 19;

byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб

void setup() {
  Serial.begin(9600); //открываем порт для связи с ПК

  pinMode(relay, OUTPUT); // настроить пин реле как выход
  pinMode(mosfet, OUTPUT); // настроить пин мосфета как выход
   pinMode(relay1, OUTPUT);
    pinMode(relay2, OUTPUT);
     pinMode(relay3, OUTPUT);
      pinMode(relay4, OUTPUT);
       pinMode(relay5, OUTPUT);
        pinMode(relay6, OUTPUT);
         pinMode(relay7, OUTPUT);
          pinMode(relay8, OUTPUT);
       pinMode(relay61, OUTPUT);
       pinMode(relay51, OUTPUT);

  radio.begin(); //активировать модуль
  radio.setAutoAck(1);         //режим подтверждения приёма, 1 вкл 0 выкл
  radio.setRetries(0, 15);    //(время между попыткой достучаться, число попыток)
  radio.enableAckPayload();    //разрешить отсылку данных в ответ на входящий сигнал
  radio.setPayloadSize(32);     //размер пакета, в байтах

  radio.openReadingPipe(1, address[0]);     //хотим слушать трубу 0
  radio.setChannel(0x60);  //выбираем канал (в котором нет шумов!)

  radio.setPALevel (RF24_PA_MAX); //уровень мощности передатчика. На выбор RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX
  radio.setDataRate (RF24_250KBPS); //скорость обмена. На выбор RF24_2MBPS, RF24_1MBPS, RF24_250KBPS
  //должна быть одинакова на приёмнике и передатчике!
  //при самой низкой скорости имеем самую высокую чувствительность и дальность!!

  radio.powerUp(); //начать работу
  radio.startListening();  //начинаем слушать эфир, мы приёмный модуль
}

void loop() {
  byte pipeNo;
  while ( radio.available(&pipeNo)) {  // слушаем эфир со всех труб
    radio.read( &recieved_data, sizeof(recieved_data) );         // чиатем входящий сигнал
    analogWrite(relay, recieved_data[0]); //то бишь 0 или 1
    analogWrite(relay3, recieved_data[1]);
    analogWrite(mosfet, recieved_data[2]);  
    analogWrite(relay1, recieved_data[3]);
    analogWrite(relay5, recieved_data[4]);
    analogWrite(relay4, recieved_data[5]);
    analogWrite(relay6, recieved_data[6]);
    analogWrite(relay2, recieved_data[7]);
    analogWrite(relay7, recieved_data[8]);
    analogWrite(relay8, recieved_data[9]);
        digitalWrite(relay51, recieved_data[11]);
    analogWrite(relay61, recieved_data[10]);

  }
}

 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Код Ваш?

Вы его полностью понимаете?

Ruslan soloduch
Offline
Зарегистрирован: 11.04.2019

код мой !пару функций строк не понимаю не понима 

radio.setRetries(0, 15);    //(время между попыткой достучаться, число попыток)
46   radio.enableAckPayload()

 

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

Так Вы сами писали или Вы не понимаете? Это несовместимо.

Ruslan soloduch
Offline
Зарегистрирован: 11.04.2019

взял аснову из( примера - radio-head master - nrf24) и перепесал на свой лад ,все работает хотелось бы только чтоб при потери связи приемник не продолжал выполнять последнюю задачу 

Ruslan soloduch
Offline
Зарегистрирован: 11.04.2019

подскажи какая функциия этих строк ,

radio.setRetries(0, 15);    //(время между попыткой достучаться, число попыток)
46   radio.enableAckPayload()

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

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

Ruslan soloduch
Offline
Зарегистрирован: 11.04.2019

ты хоть сам читал 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018
mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Ruslan soloduch пишет:

ты хоть сам читал 

Да, был неправ, тогда только сюда

Ruslan soloduch
Offline
Зарегистрирован: 11.04.2019

сылка не работает 

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

Моя для STM32, а так работает

Ruslan soloduch
Offline
Зарегистрирован: 11.04.2019

мля не магу найти за что зацепится 

 

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018
void RF24::setRetries ( uint8_t  delay,
    uint8_t  count 
  )    

Set the number and delay of retries upon failed submit.

Parameters:
delay How long to wait between each retry, in multiples of 250us, max is 15. 0 means 250us, 15 means 4000us.
count How many retries before giving up, max 15
void RF24::enableAckPayload ( void    )  

Enable custom payloads on the acknowledge packets.

Ack payloads are a handy way to return data back to senders without manually changing the radio modes on both units.

See also:
examples/pingpair_pl/pingpair_pl.pde