Мне интересна и постоянно ее просматриваю. Но помочь ничем не могу (((
Я думал дед или ещё кто из гуру подтянется в тему и подскажут, но, наверное, и они не могут...
Экспериментируй, это не останется зря. Даже отсутствия результата (или плохой результат) - это тоже результат.
Думал «намедне» об твоём вопросе (ничего что на ты?), у меня такие мысли пришли в голову - а нет ли в используемых тобой библиотеках такой же переменной (flagTX) и не пересекаются ли они? Установил подобные библиотеки (я не знаю откуда у тебя они - я ставил из ide), прошёлся поиском. В моих есть подобные переменные, но именования другие у них.
С другой стороны - странно, что только с этим флагом и работает (или и без него тоже? То есть если if-ы эти закомментировать - работает?) Может упустил я что.
Я разные названия переменных пробовала, безрезультатно.
BOOM пишет:
С другой стороны - странно, что только с этим флагом и работает (или и без него тоже? То есть если if-ы эти закомментировать - работает?) Может упустил я что.
Можно вообще убрать паузы и условия, все работает, отправка - прием
Так ты не человек. Так бы сразу и сказала... Не бывает таких идеальных женщин. Хотя... Может проблемы в ардуино и не дают проблем в семье! Удачи тебе и мужу такому, стойкому, к женским железячкам (не резиновым, заметь!).... :-)
Мне интересна и постоянно ее просматриваю. Но помочь ничем не могу (((
Я думал дед или ещё кто из гуру подтянется в тему и подскажут, но, наверное, и они не могут...
Экспериментируй, это не останется зря. Даже отсутствия результата (или плохой результат) - это тоже результат.
Думал «намедне» об твоём вопросе (ничего что на ты?), у меня такие мысли пришли в голову - а нет ли в используемых тобой библиотеках такой же переменной (flagTX) и не пересекаются ли они? Установил подобные библиотеки (я не знаю откуда у тебя они - я ставил из ide), прошёлся поиском. В моих есть подобные переменные, но именования другие у них.
С другой стороны - странно, что только с этим флагом и работает (или и без него тоже? То есть если if-ы эти закомментировать - работает?) Может упустил я что.
Я разные названия переменных пробовала, безрезультатно.
С другой стороны - странно, что только с этим флагом и работает (или и без него тоже? То есть если if-ы эти закомментировать - работает?) Может упустил я что.
Можно вообще убрать паузы и условия, все работает, отправка - прием
Вот неужели кроме меня тема никому не интересна? XDDD
ну почему же неинтересна, очень даже
#include "Packet.h" #define SIG_POWER RF24_PA_LOW #define SIG_SPEED RF24_250KBPS #define CH_NUM 0x60 #include <SPI.h> #include "nRF24L01.h" #include "RF24.h" #include "Packet.h" unsigned long TimeOtpr; bool FlagOtpr=true; RF24 radio(9, 10); byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; void radioTX() { radio.begin(); radio.setAutoAck(1); radio.setRetries(0, 15); radio.enableAckPayload(); radio.setPayloadSize(32); radio.openWritingPipe(address[0]); radio.setChannel(CH_NUM); radio.setPALevel(SIG_POWER); radio.setDataRate(SIG_SPEED); radio.powerUp(); radio.stopListening(); } void setup() { Serial.begin(9600); radioTX(); } void loop() { if (FlagOtpr){ radio.powerUp(); delay(20); FlagOtpr=false; AllThePorts ports; ports.text = B11100111; ports.adr = B11111101; ports.setCRC(); bool ok=(radio.write((char *)&ports, sizeof(ports))); TimeOtpr=millis(); Serial.println("Send"); Serial.println(ok); } if(!FlagOtpr && millis()-TimeOtpr >= 100) { FlagOtpr=true; } }Добаввив 44 и 45 строку, работает стабильнее, отправка происходит.
Почему то при отпрвке bool ok возвращает 0, а не 1
А не может это быть багом программиста? Типа некоторые по олдскульному вместо 0 возвращают -1.
Ножку CSN с 9 пина подключила к +3,3 Вольт, передача работает.
Стабильно работает на скорости RF24_1MBPS
На скорости RF24_250KBPS с перебоями приема или отправки
radio.setAutoAck(1) должна быть установлена 1
Если radio.setAutoAck(0), то radio.write возвращает 1 (прием раз через раз)
Если radio.setAutoAck(1), то radio.write возвращает 0 (прием стабильный)
А с булевой переменной в условии поборола проблему?
А с булевой переменной в условии поборола проблему?
не мешай девушке мужу ужин готовить )))
А с булевой переменной в условии поборола проблему?
Пробовала)
Так ты не человек. Так бы сразу и сказала... Не бывает таких идеальных женщин. Хотя... Может проблемы в ардуино и не дают проблем в семье! Удачи тебе и мужу такому, стойкому, к женским железячкам (не резиновым, заметь!).... :-)
А с булевой переменной в условии поборола проблему?
Пробовала)
А с булевой переменной в условии поборола проблему?
Пробовала)
Не так прочитала...ссори...
Поборола.
Козерог.
Итоги:
Передатчик:
#include <SPI.h> #include "nRF24L01.h" #include "RF24.h" #define SIG_POWER RF24_PA_MAX #define SIG_SPEED RF24_1MBPS #define CH_NUM 0x60 #define ADRESS 0xAABBCCDD11LL unsigned long TimeOtpr; RF24 radio(9, 10); uint32_t message=333; uint32_t priem; bool FlagSend=true; void SettingTX(){ radio.begin(); delay(500); radio.setAutoAck(true); radio.setRetries(15, 15); radio.enableAckPayload(); //radio.setPayloadSize(32); radio.enableDynamicPayloads(); radio.openWritingPipe(ADRESS); radio.setChannel(CH_NUM); radio.setPALevel (SIG_POWER); radio.setDataRate (SIG_SPEED); radio.setCRCLength(RF24_CRC_16); //radio.setCRCLength(RF24_CRC_8); // radio.setCRCLength(RF24_CRC_DISABLED); //radio.powerUp(); radio.stopListening();//Передатчик radio.powerUp(); } void SEND(){ radio.flush_tx(); //radio.powerUp(); //delay(20); bool ok=radio.write(&message, sizeof(message)); if (ok){ Serial.println("Send"); }else{ Serial.println("Error Send"); } //if (!radio.available()) { if(radio.isAckPayloadAvailable()) { Serial.println("Ок"); } TimeOtpr=millis(); } void setup() { Serial.begin(9600); SettingTX(); } void loop() { //if (!radio.available()) { if(radio.isAckPayloadAvailable()) { Serial.println("OkLoop"); } if (FlagSend){ FlagSend=false; SEND(); } if(!FlagSend && millis()-TimeOtpr >= 1000) { FlagSend=true; } }Приёмник:
#include <SPI.h> #include "nRF24L01.h" #include "RF24.h" #define SIG_POWER RF24_PA_MAX #define SIG_SPEED RF24_1MBPS #define CH_NUM 0x60 #define ADRESS 0xAABBCCDD11LL RF24 radio(9, 10); uint32_t message; uint32_t otvet=222; void SettingRX(){ radio.begin(); delay(500); radio.setAutoAck(true); radio.setRetries(15, 15); radio.enableAckPayload(); // radio.setPayloadSize(32); radio.enableDynamicPayloads(); radio.openReadingPipe(1,ADRESS); radio.setChannel(CH_NUM); radio.setPALevel (SIG_POWER); radio.setDataRate (SIG_SPEED); radio.setCRCLength(RF24_CRC_16); //radio.setCRCLength(RF24_CRC_8); // radio.setCRCLength(RF24_CRC_DISABLED); //radio.powerUp(); radio.startListening(); radio.powerUp(); } void setup() { Serial.begin(9600); SettingRX(); } void loop() { if( radio.available()){ radio.read(&message, sizeof(message) ); Serial.print("Read:"); Serial.print(message); Serial.println(); radio.writeAckPayload(1,&otvet, sizeof(otvet)); Serial.println("Otvet Ok"); } }//loopПриёмник сообщения получает, отправляет ответ, но передатчик ответ не получает.
Разобралась. Муж прогрел феном платы, всё заработало...
Вот это да! Точно говорят - «одна сатана» )))
Удачи в творчестве!)
Один из модулей, который был приёмником, (после перемены местами с передачтком) отказывался отправлять данные.
Вот собственно так и узнала в чём вся суть проблемы.
как пользоваться этой страницей?
вчера напечатал текст, скинул сюда, сегодня его нету
я впервые на форуме не знаю еще как с ней работать
как пользоваться этой страницей?
вчера напечатал текст, скинул сюда, сегодня его нету
я впервые на форуме не знаю еще как с ней работать
вы бы почитали о размещении программного кода, панель вверху, свыше 100 строк - сворачивать, отклонение от правил зачищается
kasun_69, лучше создайте новую тему для Вашей проблемы.
Вам будет легче здесь освоиться, прочитав http://arduino.ru/forum/obshchii/pesochnitsa-dlya-vsekh-novichkov