--- /dev/null
+/*
+ * See documentation at https://nRF24.github.io/RF24
+ * See License information at root directory of this library
+ * Author: Brendan Doherty (2bndy5)
+ */
+
+/**
+ * A simple example of sending data from 1 nRF24L01 transceiver to another.
+ *
+ * This example was written to be used on 2 devices acting as "nodes".
+ * Use the Serial Monitor to change each node's behavior.
+ */
+#include <SPI.h>
+#include "printf.h"
+#include "RF24.h"
+
+#define CE_PIN 8
+#define CSN_PIN 9
+// instantiate an object for the nRF24L01 transceiver
+RF24 radio(CE_PIN, CSN_PIN);
+
+// Let these addresses be used for the pair
+uint8_t address[][6] = { "1Node", "2Node" };
+// It is very helpful to think of an address as a path instead of as
+// an identifying device destination
+
+// to use different addresses on a pair of radios, we need a variable to
+// uniquely identify which address this radio will use to transmit
+bool radioNumber = 1; // 0 uses address[0] to transmit, 1 uses address[1] to transmit
+
+// Used to control whether this node is sending or receiving
+bool role = false; // true = TX role, false = RX role
+
+// For this example, we'll be using a payload containing
+// a single float number that will be incremented
+// on every successful transmission
+uint16_t payload = 0;
+
+void setup() {
+
+ pinMode(A5, OUTPUT);
+ digitalWrite(A5, HIGH);
+
+ pinMode(A3, OUTPUT);
+ digitalWrite(A3, HIGH);
+
+ Serial.begin(115200);
+ while (!Serial) {
+ // some boards need to wait to ensure access to serial over USB
+ }
+
+ // initialize the transceiver on the SPI bus
+ if (!radio.begin())
+ {
+ Serial.println(F("radio hardware is not responding!!"));
+ while (1) {} // hold in infinite loop
+ }
+
+ // print example's introductory prompt
+ Serial.println(F("RF24/examples/GettingStarted"));
+
+ // To set the radioNumber via the Serial monitor on startup
+ // Serial.println(F("Which radio is this? Enter '0' or '1'. Defaults to '0'"));
+ // while (!Serial.available()) {
+ // // wait for user input
+ // }
+ //char input = Serial.parseInt();
+ //radioNumber = input == 1;
+ Serial.print(F("radioNumber = "));
+ Serial.println((int)radioNumber);
+
+ // role variable is hardcoded to RX behavior, inform the user of this
+ Serial.println(F("*** PRESS 'T' to begin transmitting to the other node"));
+
+ // Set the PA Level low to try preventing power supply related problems
+ // because these examples are likely run with nodes in close proximity to
+ // each other.
+ radio.setPALevel(RF24_PA_LOW); // RF24_PA_MAX is default.
+
+ // save on transmission time by setting the radio to only transmit the
+ // number of bytes we need to transmit a float
+ radio.setPayloadSize(sizeof(payload)); // float datatype occupies 4 bytes
+
+ // set the TX address of the RX node into the TX pipe
+ radio.openWritingPipe(address[radioNumber]); // always uses pipe 0
+
+ // set the RX address of the TX node into a RX pipe
+ radio.openReadingPipe(1, address[!radioNumber]); // using pipe 1
+
+
+ radio.startListening(); // put radio in RX mode
+
+ // For debugging info
+ // printf_begin(); // needed only once for printing details
+ // radio.printDetails(); // (smaller) function that prints raw register values
+ // radio.printPrettyDetails(); // (larger) function that prints human readable data
+
+} // setup
+
+void loop()
+{
+ uint8_t pipe;
+ if (radio.available(&pipe))
+ { // is there a payload? get the pipe number that recieved it
+ uint8_t bytes = radio.getPayloadSize(); // get the size of the payload
+ radio.read(&payload, bytes); // fetch payload from FIFO
+ Serial.print(F("Received "));
+ Serial.print(bytes); // print the size of the payload
+ Serial.print(F(" bytes on pipe "));
+ Serial.print(pipe); // print the pipe number
+ Serial.print(F(": "));
+ Serial.println(payload); // print the payload's value
+
+ if (payload == 1)
+ {
+ digitalWrite(A5, !digitalRead(A5));
+ }
+
+ if (payload == 2)
+ {
+ digitalWrite(A3, !digitalRead(A3));
+ }
+
+ }
+
+
+
+}
--- /dev/null
+/*
+ * See documentation at https://nRF24.github.io/RF24
+ * See License information at root directory of this library
+ * Author: Brendan Doherty (2bndy5)
+ */
+
+/**
+ * A simple example of sending data from 1 nRF24L01 transceiver to another.
+ *
+ * This example was written to be used on 2 devices acting as "nodes".
+ * Use the Serial Monitor to change each node's behavior.
+ */
+#include <SPI.h>
+#include "printf.h"
+#include "RF24.h"
+
+#define CE_PIN 8
+#define CSN_PIN 9
+// instantiate an object for the nRF24L01 transceiver
+RF24 radio(CE_PIN, CSN_PIN);
+
+// Let these addresses be used for the pair
+uint8_t address[][6] = { "1Node", "2Node" };
+// It is very helpful to think of an address as a path instead of as
+// an identifying device destination
+
+// to use different addresses on a pair of radios, we need a variable to
+// uniquely identify which address this radio will use to transmit
+bool radioNumber = 1; // 0 uses address[0] to transmit, 1 uses address[1] to transmit
+
+// Used to control whether this node is sending or receiving
+bool role = true; // true = TX role, false = RX role
+
+// For this example, we'll be using a payload containing
+// a single float number that will be incremented
+// on every successful transmission
+uint16_t payload = 0;
+
+void setup()
+{
+ pinMode(A1, INPUT_PULLUP);
+ pinMode(A2, INPUT_PULLUP);
+
+ Serial.begin(115200);
+ while (!Serial) {
+ // some boards need to wait to ensure access to serial over USB
+ }
+
+ // initialize the transceiver on the SPI bus
+ if (!radio.begin()) {
+ Serial.println(F("radio hardware is not responding!!"));
+ while (1) {} // hold in infinite loop
+ }
+
+ // print example's introductory prompt
+ Serial.println(F("RF24/examples/GettingStarted"));
+
+ // To set the radioNumber via the Serial monitor on startup
+ // while (!Serial.available()) {
+ // // wait for user input
+ // }
+ // char input = Serial.parseInt();
+ radioNumber = 0;
+ Serial.print(F("radioNumber = "));
+ Serial.println((int)radioNumber);
+
+ // role variable is hardcoded to RX behavior, inform the user of this
+ Serial.println(F("*** PRESS 'T' to begin transmitting to the other node"));
+
+ // Set the PA Level low to try preventing power supply related problems
+ // because these examples are likely run with nodes in close proximity to
+ // each other.
+ radio.setPALevel(RF24_PA_LOW); // RF24_PA_MAX is default.
+
+ // save on transmission time by setting the radio to only transmit the
+ // number of bytes we need to transmit a float
+ radio.setPayloadSize(sizeof(payload)); // float datatype occupies 4 bytes
+
+ // set the TX address of the RX node into the TX pipe
+ radio.openWritingPipe(address[radioNumber]); // always uses pipe 0
+
+ // set the RX address of the TX node into a RX pipe
+ radio.openReadingPipe(1, address[!radioNumber]); // using pipe 1
+
+ // additional setup specific to the node's role
+
+ radio.stopListening(); // put radio in TX mode
+
+
+ // For debugging info
+ // printf_begin(); // needed only once for printing details
+ // radio.printDetails(); // (smaller) function that prints raw register values
+ // radio.printPrettyDetails(); // (larger) function that prints human readable data
+
+} // setup
+
+void loop() {
+
+ if (!digitalRead(A1))
+ {
+ payload = 1;
+ } else if (!digitalRead(A2))
+ {
+ payload = 2;
+ }
+ else {
+ payload = 0;
+ }
+
+ unsigned long start_timer = micros(); // start the timer
+ bool report = radio.write(&payload, sizeof(payload)); // transmit & save the report
+ unsigned long end_timer = micros(); // end the timer
+
+ if (report) {
+ Serial.print(F("Transmission successful! ")); // payload was delivered
+ Serial.print(F("Time to transmit = "));
+ Serial.print(end_timer - start_timer); // print the timer result
+ Serial.print(F(" us. Sent: "));
+ Serial.println(payload); // print payload sent
+ payload += 1; // increment float payload
+ } else {
+ Serial.println(F("Transmission failed or timed out")); // payload was not delivered
+ }
+
+ // to make this example readable in the serial monitor
+ delay(250); // slow transmissions down by 1 second
+
+}