Добрый день!!! Кто подскажет в чем проблема и как это исправить приобрел два модуля(один точно рабочий ) но не могу их соединить, загружаю скетч теста выдает такую информацию, я так понимаю у них разная скорость передачи данных???? И на одном модуле при тестировании порта все время разная скорость.
Вообще-то это тест наличия несущей в каналах для определения чистых каналов. Или проверки некой работоспособности модуля. На установленную скорость в этом скетче не обращайте внимания. Ну или установите желательную принудительно в сетапе.
Что безуспешно? Мне показалось, что я достаточно подробно написал, что данный скетч только для проверки чистоты каналов. Никаких соединений с другими устройствами не производится. И что скорость в нем по барабану - проверяется наличие несущей.
#include <SPI.h> #include "nRF24L01.h" #include "RF24.h" RF24 radio(9,10); // инициализировать модуль на пинах 9 и 10 Для Уно const uint8_t num_channels = 128; uint8_t values[num_channels]; void setup(void) { Serial.begin(9600); printf_begin(); radio.begin(); radio.setAutoAck(false); radio.startListening(); radio.printDetails(); // Вот эта строка напечатает нам что-то, если все правильно соединили. delay(5000); // И посмотрим на это пять секунд. radio.stopListening(); int i = 0; // А это напечатает нам заголовки всех 127 каналов while ( i < num_channels ) { printf("%x",i>>4); ++i; } printf("\n\r"); i = 0; while ( i < num_channels ) { printf("%x",i&0xf); ++i; } printf("\n\r"); } const int num_reps = 100; void loop(void) { memset(values,0,sizeof(values)); int rep_counter = num_reps; while (rep_counter--) { int i = num_channels; while (i--) { radio.setChannel(i); radio.startListening(); delayMicroseconds(128); radio.stopListening(); if ( radio.testCarrier() ) ++values; } } int i = 0; while ( i < num_channels ) { printf("%x",min(0xf,values&0xf)); ++i; } printf("\n\r"); } int serial_putc( char c, FILE * ) { Serial.write( c ); return c; } void printf_begin(void) { fdevopen( &serial_putc, 0 ); }
На дном модуле каждый раз при открытии монитора порта последнии четыре строчки всегда разные кроме модели модуля
RX_ADDR_P0-1 = 0xe7e7e7e7e7 0xc2c2c2c2c2 TX_ADDR = 0xe7e7e7e7e7 Я так понимаю в этих строчках не должно быть нулей?
В инициализации можно добавить принудительное выставление адресов труб Код (C++): byte addresses[][6] = {"1Node","2Node"}; radio.openWritingPipe(addresses[1]); radio.openReadingPipe(1,addresses[0]); И проверить поменяются ли ваши адреса реально (2,3 и 4 строчки вывода). Если меняются - все подключено правильно и ядро модуля живое. Иначе модуль на пропайку или сразу в мусор.
Печалька... Зато все здоровы У меня было видов 4-5 разных, некоторые не пережили издевательств. Бывает.