Nrf24 Problem z komunikacją

Masz problem, z którym nie możesz sobie poradzić? Pisz śmiało!
ODPOWIEDZ
Mimal9999
Majsterkowicz
Posty: 64
Rejestracja: 6 wrz 2016, 18:24

Nrf24 Problem z komunikacją

Post autor: Mimal9999 » 24 paź 2016, 19:17

Witam! Jakiś czas temu zakupiłem 2 moduły nrf24 z antenką lecz nie chcą się one komunikować. Próbowałem dolutować kondensatory (dalej są dolutowane) dokupiłem zasilacze do płytek zasilam je tylko na 3.3 v.

Kod odbiornika:

Kod: Zaznacz cały

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
int msg[1];
RF24 radio(9,10);
//const uint64_t pipe = 0xE8E8F0F0E1LL;
const uint64_t pipe = 0x1CF8361637LL;
int LED1 = 3;
 
void setup()
{
 Serial.begin(9600);
 radio.begin();
 radio.openReadingPipe(1,pipe);
 radio.startListening();
 pinMode(LED1, OUTPUT);
}
 
void loop()
{
 if (radio.available())
{
   bool done = false;    
   while (!done){
     done = radio.read(msg, 1);      
     Serial.println(msg[0]);
     
     if (msg[0] == 0)
{
delay(10);
digitalWrite(LED1, HIGH);
}
     else {digitalWrite(LED1, LOW);
}
     delay(10);}}
 else
{
Serial.println("Radio nie dostępne");
}
}
Kod nadajnika:

Kod: Zaznacz cały

#include <SPI.h>                            //dodaj obsługę biblioteki SPI
#include <nRF24L01.h>                       //dodaj bibliotekę obsługującą moduł
#include <RF24.h>                           //dodaj bibliotekę główną modułów RF24
  
const uint64_t pipe = 0x1CF8361637LL;       //kod kanału
 
 
RF24 radio(9, 10);                          //tworzymy instancje komunikacji
 
int pot[1]; 
int zmienna =0;     //utwórz tablicę jednoelementową o nazwie pot
 
void setup()  
{
  
  pinMode(5,INPUT);              //ustaw potencjometr jako wejście
  radio.begin();                            //uruchom moduł
  radio.setDataRate(RF24_2MBPS);            //ustaw prędkość transmisji na 2Mb/s
  radio.setPALevel(RF24_PA_HIGH);           //ustaw wzmocnienie modułu radiowego na wysokie 
  radio.openWritingPipe(pipe);              //rozpocznij transmisję
  
}
 
 
void loop()   
{
  
  pot[0]= zmienna;   //przypisz pierwszemu elementowi tablicy (pierwszej zmiennej) wartość z ADC
  // ewentualnie pot[0] = digitalRead(5);
  radio.write(pot, sizeof(pot));          //wyslij zmienną pot z odpowiadającą jej długością
         
}
Leda nie używam a to:

Kod: Zaznacz cały

 if (radio.available())
{
   bool done = false;    
   while (!done){
     done = radio.read(msg, 1);      
     Serial.println(msg[0]);
     
     if (msg[0] == 0)
{
delay(10);
digitalWrite(LED1, HIGH);
}
Zmieniłem żeby zobaczyć czy led (którego wcześniej używałem) się zaświeci.
Jak porusza się kablami to czasem pokazuje się 0 a czasem 255. Czy ktoś wie w czym jest problem? Wystarczy mi program który ciągle wysyła wiadomość którą mogę zmienić.


EDIT: Serial wygląda mniej więcej tak:

Radio nie dostępne
Radio nie dostępne
Radio nie dostępne
Radio nie dostępne
255
Radio nie dostępne
0
0
0
0
0
0
0
0

Co miesiąc do wygrania nagrody o wartości ponad 1600 zł!


ODPOWIEDZ

Strony partnerskie: