přenos dat pomocí NRF24L01
přenos dat pomocí NRF24L01
Ahoj, potřeboval bych nějaký návod jak přenést číslo z jednoho arduina na druhé pomocí NRF24L01. Koukal jsem na internetu ale všechny návody nechápu, je tam dlouhej, pro mě nesrozumitelnej kód. Mě stačí vědět, jak poslat číslo a jak ho zase přijmout.
Děkuji za odpovědi
Děkuji za odpovědi
Re: přenos dat pomocí NRF24L01
Jaké číslo chceš posílat. Typu int nebo float?
Tady je kod pro posílání dvou čísel typu int.
Vysílač:
Přijímač:
Tady je kod pro posílání dvou čísel typu int.
Vysílač:
Kód: Vybrat vše
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN 9
#define CSN_PIN 10
#define JOYSTICK_X A0
#define JOYSTICK_Y A1
// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[2]; // 2 element array holding Joystick readings
void setup() /****** SETUP: RUNS ONCE ******/
{
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);
}//--(end setup )---
void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
joystick[0] = analogRead(JOYSTICK_X);
joystick[1] = analogRead(JOYSTICK_Y);
radio.write( joystick, sizeof(joystick) );
}//--(end main loop )---
/*-----( Declare User-written Functions )-----*/
//NONE
//*********( THE END )***********
Kód: Vybrat vše
/*-----( Import needed libraries )-----*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define CE_PIN 9
#define CSN_PIN 10
// NOTE: the "LL" at the end of the constant is "LongLong" type
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
/*-----( Declare objects )-----*/
RF24 radio(CE_PIN, CSN_PIN); // Create a Radio
/*-----( Declare Variables )-----*/
int joystick[2]; // 2 element array holding Joystick readings
void setup() /****** SETUP: RUNS ONCE ******/
{
Serial.begin(9600);
delay(1000);
Serial.println("Nrf24L01 Receiver Starting");
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();;
}//--(end setup )---
void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
if ( radio.available() )
{
// Read the data payload until we've received everything
bool done = false;
while (!done)
{
// Fetch the data payload
done = radio.read( joystick, sizeof(joystick) );
Serial.print("X = ");
Serial.print(joystick[0]);
Serial.print(" Y = ");
Serial.println(joystick[1]);
}
}
else
{
Serial.println("No radio available");
}
}//--(end main loop )---
/*-----( Declare User-written Functions )-----*/
//NONE
Re: přenos dat pomocí NRF24L01
program pro vysílač zatím ok, ale program pro přijímač hlásí tohle:
/tmp/arduino_modified_sketch_41961/sketch_dec26d.ino: In function 'void loop()':
sketch_dec26d:38: error: void value not ignored as it ought to be
done = radio.read( joystick, sizeof(joystick) );
^
exit status 1
void value not ignored as it ought to be
/tmp/arduino_modified_sketch_41961/sketch_dec26d.ino: In function 'void loop()':
sketch_dec26d:38: error: void value not ignored as it ought to be
done = radio.read( joystick, sizeof(joystick) );
^
exit status 1
void value not ignored as it ought to be
Re: přenos dat pomocí NRF24L01
Možná záleží, jakou použiješ knihovnu.
Já mám tuto: https://github.com/maniacbug/RF24
Já mám tuto: https://github.com/maniacbug/RF24
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: přenos dat pomocí NRF24L01
Mám otázku k tomuto:
To pipe to je akože šifra? Niečo ako hash, ktorým sa správa šifruje? Dík
Kód: Vybrat vše
const uint64_t pipe = 0xE8E8F0F0E1LL; // Define the transmit pipe
- SkullKeep
- Příspěvky: 291
- Registrován: 23 srp 2017, 18:51
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: přenos dat pomocí NRF24L01
Spíš bych to viděl na definici kanálu na vysílání pro který přijímač to je, pak případně šifrování.
P. Q. M.
Re: přenos dat pomocí NRF24L01
To číslo je 40-ti bitová adresa komunikačního kanálu.
Pro použití více komunikačních kanálů zůstává 32 bitů stejných a mění se len poslední bity. Maximálně 5 dalších kanálů je možno použít pro jeden přijímač. Celkem tedy jde přijímat od 6-ti vysílačů.
Adresování potom může vypadat takto:
Pro použití více komunikačních kanálů zůstává 32 bitů stejných a mění se len poslední bity. Maximálně 5 dalších kanálů je možno použít pro jeden přijímač. Celkem tedy jde přijímat od 6-ti vysílačů.
Adresování potom může vypadat takto:
Kód: Vybrat vše
const uint64_t pipes[6] = { 0xFFFFFFFFF1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL, 0xF0F0F0F0E4LL, 0xF0F0F0F0E5LL, 0xF0F0F0F0E6LL };
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: přenos dat pomocí NRF24L01
Majú mi tie moduly čoskoro prísť, vyzerajú veľmi zaujímavo
Re: přenos dat pomocí NRF24L01
Děkuji, už mi vše funguje bezchybně, asi to bylo tou knihovnou
Re: přenos dat pomocí NRF24L01
Nezkoušel někdo náhodou připojit 2 moduly NRF24L01 k jednomu arduinu? Jde to?
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 31 hostů