Проблема с приёмом пакетов 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 строчке.