arduino nrf24l01


hi,

i work transmitter , receiver. have 2 sketches , works fine, how can add more arduino nano's (receivers) ? thought have work addresses, don't know how...

transmitter

code: [select]

/*
   1 - gnd
   2 - vcc 3.3v !!! not 5v
   3 - ce arduino pin 7
   4 - csn arduino pin 8
   5 - sck arduino pin 13
   6 - mosi arduino pin 11
   7 - miso arduino pin 12
   8 - unused


/*-----( import needed libraries )-----*/
#include <spi.h>   // comes arduino ide
#include "rf24.h"  // download , install (see above)
/*-----( declare constants , pin numbers )-----*/
//none yet
/*-----( declare objects )-----*/
// (create instance of radio, specifying ce , cs pins. )
rf24 myradio (7, 8); // "myradio" identifier use in following methods
/*-----( declare variables )-----*/
byte addresses[][6] = {"1node"}; // create address 1 pipe.
int datatransmitted;  // data transmitted transmitter
boolean stat = true;


//test
int contact = 0;

void setup()   /****** setup: runs once ******/
{

  pinmode(2,output);

 
  // use serial monitor (symbol on far right). set speed 115200 (bottom right)
  serial.begin(115200);
  delay(1000);
  serial.println(f("rf24/simple transmit data test"));
  serial.println(f("questions: terry@yourduino.com"));
  datatransmitted = 100; // arbitrary known data transmit. change test...
  myradio.begin();  // start physical nrf24l01 radio
  myradio.setchannel(108);  // above wifi channels
  // set pa level low prevent power supply related issues since a
  // getting_started sketch, , likelihood of close proximity of devices. rf24_pa_max default.
  //myradio.setpalevel(rf24_pa_min);
    myradio.setpalevel(rf24_pa_max);  // uncomment more power

  myradio.openwritingpipe( addresses[0]); // use first entry in array 'addresses' (only 1 right now)
  delay(1000);

}//--(end setup )---


void loop()   /****** loop: runs ******/
{

contact=digitalread(2);
 serial.println(contact);

      datatransmitted = contact;
 
  myradio.write( &datatransmitted, sizeof(datatransmitted) ); //  transmit data

  serial.print(f("data transmitted = "));
  serial.print(datatransmitted);
  serial.println(f(" no acknowledge expected"));
  datatransmitted = datatransmitted + 1;  // send different data next time
  delay(500);
datatransmitted = 0;


}//--(end main loop )---

/*-----( declare user-written functions )-----*/


//*********( end )***********



receiver:
code: [select]

/*
   1 - gnd
   2 - vcc 3.3v !!! not 5v
   3 - ce arduino pin 7
   4 - csn arduino pin 8
   5 - sck arduino pin 13
   6 - mosi arduino pin 11
   7 - miso arduino pin 12
   8 - unused

/*-----( import needed libraries )-----*/
#include <spi.h>   // comes arduino ide
#include "rf24.h"  // download , install (see above)
/*-----( declare constants , pin numbers )-----*/
//none yet
/*-----( declare objects )-----*/
// (create instance of radio, specifying ce , cs pins. )
rf24 myradio (7, 8); // "myradio" identifier use in following methods
/*-----( declare variables )-----*/
byte addresses[][6] = {"1node"}; // create address 1 pipe.
int datareceived;  // data received transmitter

void setup()   /****** setup: runs once ******/
{
  // use serial monitor (symbol on far right). set speed 115200 (bottom right)
  serial.begin(115200);
  delay(1000);

  myradio.begin();  // start physical nrf24l01 radio
  myradio.setchannel(108);  // above wifi channels
  // set pa level low prevent power supply related issues since a
  // getting_started sketch, , likelihood of close proximity of devices. rf24_pa_max default.
  //myradio.setpalevel(rf24_pa_min);
    myradio.setpalevel(rf24_pa_max);  // uncomment more power

  myradio.openreadingpipe(1, addresses[0]); // use first entry in array 'addresses' (only 1 right now)
  myradio.startlistening();

  // initialize digital pin led_builtin output.
  pinmode(4, output);
 
}//--(end setup )---


void loop()   /****** loop: runs ******/
{

  if ( myradio.available()) // check incoming data transmitter
  {
    while (myradio.available())  // while there data ready
    {
      myradio.read( &datareceived, sizeof(datareceived) ); // data payload (you must have defined already!)
    }
    // data, print it
    if (datareceived == 1) {
   
    digitalwrite(4, high);
    serial.print("aan: ");
    }
    if (datareceived == 0) { 
   
    digitalwrite(4, low);
    serial.print("uit: ");
    }
   
    serial.print("data received = ");
    serial.println(datareceived);
  } //end radio available

}//--(end main loop )---

/*-----( declare user-written functions )-----*/

//none yet
//*********( end )***********

you need separate address each "slave" , "master" needs open writing pipe each address before sends data different slaves.

at moment opening writing pipe in master in setup(). need move loop() , iterate through array of addresses.

...r
simple nrf24l01+ tutorial


Arduino Forum > Using Arduino > Programming Questions > arduino nrf24l01


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor