Arduino nRF24L01

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

Arduino nRF24L01

Post autor: Mimal9999 » 6 wrz 2016, 18:30

Witam! Dzisiaj przyszły mi moduły nRF24L01. Z poradników w internecie wyczytałem żeby najpierw odpalić program pingpair. Wszędzie było napisane że powinny się wyświetlać konkretne znaki ale u mnie są tylko takie IÂRpB‡R˙ÁBIBÂŃüRABB˙…űĹBFB\ĆůIÂRÚBĂ×ţWŹF
MX
Są jeszcze prostokąty itp. ale nie da się ich skopiować.
W internecie znalazłem taki program:
Nadajnik

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;
int SW1 = 7;
 
void setup()
{
 Serial.begin(9600);
 radio.begin();
 radio.openWritingPipe(pipe);
 pinMode(SW1, INPUT_PULLUP);
}
 
void loop()
{
 if (digitalRead(SW1) == HIGH)
 
{
 msg[0] = 111;
 radio.write(msg, 1);
 Serial.println("tak");
}
else{
  msg[0] = 222;
 radio.write(msg, 2);
 Serial.println("nie");
}
}

Odbiornik

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;
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");
}
}
Wszystko niby działa dobrze ale wysyłana wiadomość to "0" (w odbiorniku już zmieniłem ifa z "111" na "0") Na nadajniku sprawdzałem czy przycisk działa i działa ale odbiornik odbiera same 0. Nadajnik to Arduino nano a odbiornik UNO. Co mam zrobić czy to wina modułów? Uprzedzam pytania, zasilanie na 3,3V.

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


Awatar użytkownika
Slawek
Starszy majsterkowicz
Posty: 448
Rejestracja: 29 mar 2015, 15:05

Re: Arduino nRF24L01

Post autor: Slawek » 6 wrz 2016, 20:38

A kondensatory 4,7uF pomiędzy 3.3V a GND masz ? to bardzo ważne w przypadku NRF.

Pozdr
Mimal9999
Majsterkowicz
Posty: 64
Rejestracja: 6 wrz 2016, 18:24

Re: Arduino nRF24L01

Post autor: Mimal9999 » 6 wrz 2016, 22:30

Slawek pisze:A kondensatory 4,7uF pomiędzy 3.3V a GND masz ? to bardzo ważne w przypadku NRF.

Pozdr
Przed chwilą sprawdzałem i chyba działa jutro je przylutuje i sprawdzę jeszcze raz
Mimal9999
Majsterkowicz
Posty: 64
Rejestracja: 6 wrz 2016, 18:24

Re: Arduino nRF24L01

Post autor: Mimal9999 » 7 wrz 2016, 18:40

Mimal9999 pisze:
Slawek pisze:A kondensatory 4,7uF pomiędzy 3.3V a GND masz ? to bardzo ważne w przypadku NRF.

Pozdr
Przed chwilą sprawdzałem i chyba działa jutro je przylutuje i sprawdzę jeszcze raz
Sprawdziłem i działa inny program wykrywa połączenie między nimi ale jest inny problem w programie który podałem odbierają się dany tylko "0" albo "255" lub radio niedostępne. Kondensatory mam przylutowane w dobrą stronę i nie wiem czy to moduły czy co? Dodam też 2 program ale ten nie otrzymuje nic.

Odbiornik

Kod: Zaznacz cały

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10);

const byte rxAddr[6] = "12345";

void setup()
{
  while (!Serial);
  Serial.begin(9600);
  
  radio.begin();
  radio.openReadingPipe(0, rxAddr);
  
  radio.startListening();
}

void loop()
{
  if (radio.available())
  {
    char text[32] = {0};
    radio.read(&text, sizeof(text));
    
    Serial.println(text);
  }
}
Nadajnik

Kod: Zaznacz cały

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(9, 10);

const byte rxAddr[6] = "12345";

void setup()
{
  radio.begin();
  radio.setRetries(15, 15);
  radio.openWritingPipe(rxAddr);
  
  radio.stopListening();
}

void loop()
{
  const char text[] = "Hello World";
  radio.write(&text, sizeof(text));
  
  delay(1000);
}
marcelh2o
Majsterkowicz
Posty: 103
Rejestracja: 8 wrz 2013, 11:18

Re: Arduino nRF24L01

Post autor: marcelh2o » 8 wrz 2016, 11:10

sprawdz w serial monitorze czy masz ustawione 9600 baudow
Mimal9999
Majsterkowicz
Posty: 64
Rejestracja: 6 wrz 2016, 18:24

Re: Arduino nRF24L01

Post autor: Mimal9999 » 8 wrz 2016, 18:44

marcelh2o pisze:sprawdz w serial monitorze czy masz ustawione 9600 baudow
Tak
ODPOWIEDZ

Strony partnerskie: