Добился работы этих радиомодулей. Выкладываю рабочие примеры. Подключение в принципе на видео видно, могу выложить фото. ,кому пригодится просьба подписаться, мне будет приятно, что работа проделана не зря. 150 метров дальности связи проверено! На мой взгляд очень удобный модуль, изменяя в скетче слово синхронизации или номер канала можно принимать и передавать данные определённой ардуине. Для МЕГИ с выводом в монитор порта: Код (C++): #include <SPI.h> #include "LT8920.h" const uint8_t PIN_NRF_RST = 26; const uint8_t PIN_NRF_CS = 28; const uint8_t PIN_NRF_PKT = 30; char sbuf[32]; LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST); uint8_t a = 0; uint8_t b = 181; uint8_t c = 16; uint8_t d = 7; uint8_t e = 249; void setup() { Serial.begin(9600); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV16); lt.begin(); lt.setDataRate(LT8920::LT8920_1MBPS); lt.setChannel(80); lt.setSyncWord(0x1234123412341234); //verify chip registers. for (int i = 0; i <= 52; i++) { uint16_t value = lt.readRegister(i); sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value); Serial.print(sbuf); } } void loop() { uint8_t data[] = { a,b,c,d,e }; lt.sendPacket(data, 5); Serial.print("Packet send:"); Serial.println(a); a=a+1; if (a>=256) { a=0; } lt.startListening(); delay(2000); if (lt.available()) { uint8_t buf[32]; int packetSize = lt.read(buf, 32); if (packetSize > 0) { Serial.println(F("Packet read OK")); for(int i = 0; i < packetSize; i++) { Serial.print(i); Serial.print("="); Serial.println(buf); } } else { Serial.println(F("Packet read fail")); } } } Такой-же для УНО: Код (C++): #include <SPI.h> #include "LT8920.h" const uint8_t PIN_NRF_RST = 6; const uint8_t PIN_NRF_CS = 5; const uint8_t PIN_NRF_PKT = 4; char sbuf[32]; LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST); uint8_t a = 0; uint8_t b = 126; uint8_t c = 34; uint8_t d = 219; uint8_t e = 4; void setup() { Serial.begin(9600); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV16); lt.begin(); lt.setDataRate(LT8920::LT8920_1MBPS); lt.setChannel(80); lt.setSyncWord(0x1234123412341234); //verify chip registers. for (int i = 0; i <= 52; i++) { uint16_t value = lt.readRegister(i); sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value); Serial.print(sbuf); } } void loop() { uint8_t data[] = { a,b,c,d,e }; lt.sendPacket(data, 5); Serial.print("Packet send:"); Serial.println(a); a=a+1; if (a>=256) { a=0; } lt.startListening(); delay(2000); if (lt.available()) { uint8_t buf[32]; int packetSize = lt.read(buf, 32); if (packetSize > 0) { Serial.println(F("Packet read OK")); for(int i = 0; i < packetSize; i++) { Serial.print(i); Serial.print("="); Serial.println(buf); } } else { Serial.println(F("Packet read fail")); } } } Для МЕГИ светодиод моргнёт после приёма пакета: Код (C++): #include <SPI.h> #include "LT8920.h" const uint8_t PIN_NRF_RST = 26; const uint8_t PIN_NRF_CS = 28; const uint8_t PIN_NRF_PKT = 30; char sbuf[32]; LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST); uint8_t a = 0; uint8_t b = 181; uint8_t c = 16; uint8_t d = 7; uint8_t e = 249; const int ledPin = 2; void setup() { Serial.begin(9600); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV16); pinMode(ledPin, OUTPUT); lt.begin(); lt.setDataRate(LT8920::LT8920_1MBPS); lt.setChannel(80); lt.setSyncWord(0x1234123412341234); //verify chip registers. for (int i = 0; i <= 52; i++) { uint16_t value = lt.readRegister(i); sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value); Serial.print(sbuf); } } void loop() { uint8_t data[] = { a,b,c,d,e }; lt.sendPacket(data, 5); Serial.print("Packet send:"); Serial.println(a); a=a+1; if (a>=256) { a=0; } digitalWrite(ledPin,LOW); lt.startListening(); delay(1500); if (lt.available()) { uint8_t buf[32]; int packetSize = lt.read(buf, 32); if (packetSize > 0) { Serial.println(F("Packet read OK")); for(int i = 0; i < packetSize; i++) { Serial.print(i); Serial.print("="); Serial.println(buf); } digitalWrite(ledPin, HIGH); delay(500); } else { Serial.println(F("Packet read fail")); } } } Для УНО с дисплеем I2C: Код (C++): #include <SPI.h> #include "LT8920.h" #include <LCD_1602_RUS.h> LCD_1602_RUS lcd(0x26,16,2); const uint8_t PIN_NRF_RST = 6; const uint8_t PIN_NRF_CS = 5; const uint8_t PIN_NRF_PKT = 4; char sbuf[32]; LT8920 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST); uint8_t a = 0; uint8_t b = 126; uint8_t c = 34; uint8_t d = 219; uint8_t e = 46; void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); lcd.print("Hello, world!"); SPI.begin(); SPI.setBitOrder(MSBFIRST); SPI.setClockDivider(SPI_CLOCK_DIV16); lt.begin(); lt.setDataRate(LT8920::LT8920_1MBPS); lt.setChannel(80); lt.setSyncWord(0x1234123412341234); //verify chip registers. for (int i = 0; i <= 52; i++) { uint16_t value = lt.readRegister(i); sprintf_P(sbuf, PSTR("%d = %04x\r\n"), i, value); Serial.print(sbuf); } } void loop() { uint8_t data[] = { a,b,c,d,e }; lt.sendPacket(data, 5); lcd.setCursor(0,0); lcd.print("Packet send: "); lcd.print(a,DEC); lcd.print(" "); a=a+1; if (a>=256) { a=0; } lt.startListening(); delay(2000); if (lt.available()) { uint8_t buf[32]; int packetSize = lt.read(buf, 32); if (packetSize > 0) { lcd.setCursor(0,1); for(int i = 0; i < packetSize; i++) { lcd.print(buf,DEC); lcd.print(" "); } lcd.print(" "); } } else { lcd.setCursor(0,1); lcd.print("Packet read -- "); } }
Да, как-то рука не поднимается чужую библиотеку корректировать и выкладывать. А с нуля написать не смогу, я любитель. Где подправить и как подключить я указал. Мне понадобился приёмопередатчик с минимальными габаритами и массой, заказал сначала этот, связать между собой их весной не смог т.к. инфы в инете минимум. Заказал несколько других..., не устроили..., по nrf почитал как люди мучаются... и решил добить или уж выбросить эти. Полтора месяца мытарств и то, что получилось я выложил, хорошо или плохо не знаю, судить вам. Но то-что кому-то пригодится, уверен.
а что в этом такого? - на гитхабе даже специальный механизм для этого есть - делаешь клон чужой библиотеки и правишь, в итоге будет видна и оригинальная и твоя
Запутался, если честно на GITHAB, да и Менгуанг смотрю, лицензии прижимает..., была 2-я ... сейчас уже 3-я с ограничениями... Не мой это хлеб честно сказать..., кто хочет, корректируйте! Будут вопросы..., спрашивайте!
Отлично. Мне это очень пригодится в моем проекте. Спасибо Правда, нужно будет адаптировать это под работу с Arduino Pro Mini и TINY85 Digispark
Вот пригодилось!...https://circuitdigest.com/microcont...ge-communication-xy-wa-interface-with-arduino
И вот уже микрочип перевел...! https://microkontroller.ru/arduino-...otnogo-modulya-xy-wa-24-ggcz-k-arduino/?amp=1