NRF24L01 проблема при
- Войдите на сайт для отправки комментариев
Добрый день, делаю сеть радио модулей NRF24L01 на atmega328p, для управления неоновыми костюмами. При передачи с Arduino uno r3(передатчик) на плату с atmega328p( приемник), все работает нормально, но при увеличении дистанции между ним, модуль приемника, просто перестает принимать, остается в состояние включеного или выключенного диода, даже если вернуть его в прежнюю позицию. На приемнике модуль NRF24L01 питается через стабилизатор lm317, конденсаторы параллельно питанию поставлены, atmega328p питается через стабилизатор l7805cv, питаются оба от кроны. Использованна библиотека mirf, код скетча передатчика:
#include <SPI.h>
#include <Mirf.h>
#include <MirfHardwareSpiDriver.h>
#include <MirfSpiDriver.h>
#include <nRF24L01.h>
byte active;
void setup()
{
Serial.begin(57600);
Mirf.spi = &MirfHardwareSpi;
active=0;
Mirf.init();
Mirf.payload = 1;
Mirf.config();
Mirf.setTADDR((byte *)"serv1");
}
void loop()
{ delay(100);
if (active ==0 ){active=1;} else {active=0;}
byte data[1];
data[0]=active;
Mirf.send( data);
} код скетча приемника: #include <SPI.h>
#include <Mirf.h>
Извиняюсь за безграмотность отправил по ошибке.
вот код приемника:
#include <Mirf.h> #include <MirfHardwareSpiDriver.h> #include <MirfSpiDriver.h> #include <nRF24L01.h> int led = 2; void setup() {pinMode(led, OUTPUT); Serial.begin(57600); Mirf.spi = &MirfHardwareSpi; Mirf.init(); Mirf.setRADDR((byte *)"serv1"); Mirf.payload = 1; Mirf.config(); } void loop() { byte data[1]; if(!Mirf.isSending() && Mirf.dataReady()){ Mirf.getData(data); if (data[0]==1) {digitalWrite(led, HIGH);} if (data[0]==0) { digitalWrite(led, LOW);} } }