нужна помощь
- Войдите на сайт для отправки комментариев
Пт, 19/04/2019 - 21:14
добрый вечер .что исправить в коде приемника ?при потери связи остается работать последния задача ,а хотелось бы чтоб прекрощалась выполнение кода
? -------------------------приемник ------------------
#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]);
}
}
Код Ваш?
Вы его полностью понимаете?
код мой !пару функций строк не понимаю не понима
radio.setRetries(0, 15);//(время между попыткой достучаться, число попыток)46radio.enableAckPayload()Так Вы сами писали или Вы не понимаете? Это несовместимо.
взял аснову из( примера - radio-head master - nrf24) и перепесал на свой лад ,все работает хотелось бы только чтоб при потери связи приемник не продолжал выполнять последнюю задачу
подскажи какая функциия этих строк ,
radio.setRetries(0, 15);//(время между попыткой достучаться, число попыток)46radio.enableAckPayload()Уважаемый, ну я уж не знаю за что вам гугл обрубили, но вот. Хотя Вы не первый, и я думаю, что не последний... Парнухи надо меньше качать!
ты хоть сам читал
https://maniacbug.github.io/RF24/classRF24.html
ты хоть сам читал
Да, был неправ, тогда только сюда
сылка не работает
Моя для STM32, а так работает
мля не магу найти за что зацепится
Set the number and delay of retries upon failed submit.
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.