Проблема с приёмом пакетов nRF24L01
- Войдите на сайт для отправки комментариев
Ср, 19/02/2014 - 01:19
Доброго времени суток. Прошу вашей помощи, как более опятных в этом вопросе людей. По радиоканалу передаю данные с помощью nRF24L01.
Код передатчика:
#include <duino.h>
#include <SPI.h>
#include <DHT.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
#define DHTPIN A2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
float t1 = 0;
float t;
float h;
void setup(){
Serial.begin(9600);
Mirf.cePin = 9;
Mirf.csnPin = 10;
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setRADDR((byte *)"nano");
Mirf.payload = 9;
Mirf.config();
Serial.println("Beginning ... ");
}
void loop(){
h = dht.readHumidity();
t = dht.readTemperature();
//h++;
unsigned long time = millis();
Serial.print("Local_temp=");
Serial.println(t);
Serial.print("Local_Humidity=");
Serial.println(h);
//t++; h;
Mirf.setTADDR((byte *)"mega");
Mirf.send((byte *)&t);
while(Mirf.isSending()){}
Serial.println("Finished sending");
delay(1000);
}
Код приёмника:
#include <duino.h>
#include <SPI.h>
#include <Mirf.h>
#include <nRF24L01.h>
#include <MirfHardwareSpiDriver.h>
float t = 0;
float h = 0;// int backLight = 13;
const int analogInPin = A0;
int sensorValue = 0;
void setup(){
Serial.begin(9600);
Mirf.csnPin = 10;
Mirf.spi = &MirfHardwareSpi;
Mirf.init();
Mirf.setTADDR((byte *)"nano");
Mirf.payload = 9;
Mirf.config();
Mirf.setRADDR((byte *)"mega");
Serial.println("Listening...");
}
void loop(){
Mirf.setTADDR((byte *)"nano");
Mirf.setRADDR((byte *)"mega");
byte data[Mirf.payload];
Mirf.getData((byte *)&t);
// while((!Mirf.isSending() && Mirf.dataReady())){}
if (h>1)
{
Serial.println(t*1000+h);
}
}
Передатчик исправно отсылает данные. Если использовать приёмник в качестве передатчика, то он тоже нормально отправляет данные. А вот принимать не может. В чём может быть проблема? Я не очень хорошо знаю эту библиотеку, поэтому прошу Вашего совета.
Видел такую же тему, но подключение конденсатора параллельно нагрузке не решило проблему.
а чем не нравится библиотека http://maniacbug.github.io/RF24/ ? на мой взгляд намного там лучше всё и удобнее, а если взять rf24network так там вообще сказка. :)
У вас на приемнике h=0 всегда. Поэтому и не выполняется serial.println в 33 строчке.