Rx Code
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// If using software SPI (the default case):
#define OLED_MOSI 5
#define OLED_CLK 6
#define OLED_DC 3
#define OLED_CS 12
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
float temp1;
float temp2;
RF24 radio(9, 10);
const byte rxAddr[][6] = {"00001","00002","00003"};
void setup()
{
while (!Serial);
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1, rxAddr[1]);
//radio.openReadingPipe(2, rxAddr[2]);
radio.startListening();
//Serial.println(rxAddr[1]);
//Serial.println(rxAddr[2]);
// by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
display.begin(SSD1306_SWITCHCAPVCC);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
// init done
}
void loop()
{
if (radio.available())
{
//radio.read(&temp1, sizeof(temp1));
//radio.read(&temp2, sizeof(temp2));
//Serial.println("temp1 is");
//Serial.println(temp1);
//Serial.println("temp2 is");
//Serial.println(temp2);
display.clearDisplay();
display.setCursor(0,0);
display.println("Room 1 temp is:");
radio.read(&temp1, sizeof(temp1));
display.setCursor(95,0);
display.println(temp1);
display.display();
//delay(1000);
//display.clearDisplay();
display.setCursor(0,10);
display.println("Room 2 temp is:");
radio.read(&temp2, sizeof(temp2));
Serial.println("temp2 is");
Serial.println( temp2);
display.setCursor(95,10);
display.println(temp2);
display.display();
//Serial.println(temp2);
//display.display();
delay(1000);
Serial.println("temp1 is");
Serial.println(temp1);
Serial.println("temp2 is");
Serial.println(temp2);
}
}
Tx 1
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float Celcius=0;
float Fahrenheit=0;
RF24 radio(9,10);
const byte rxAddr[][6] = {"00001","00002","00003"} ;
void setup()
{
sensors.begin();
Serial.begin(9600);
radio.begin();
//radio.setRetries(15, 15);
radio.openWritingPipe(rxAddr[2]);
radio.stopListening();
//Serial.println(rxAddr[2]);
}
void loop()
{
sensors.requestTemperatures();
Celcius=sensors.getTempCByIndex(0);
float temp1= Celcius;
Serial.println("temp1 = ");
Serial.println(temp1);
radio.write(&temp1, sizeof(temp1));
}
Tx 2
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
float Celcius=0;
float Fahrenheit=0;
RF24 radio(9,10);
const byte rxAddr[][6] = {"00001","00002","00003"} ;
void setup()
{
sensors.begin();
Serial.begin(9600);
radio.begin();
//radio.setRetries(15, 15);
radio.openWritingPipe(rxAddr[1]);
radio.stopListening();
//Serial.println(rxAddr[1]);
}
void loop()
{
sensors.requestTemperatures();
Celcius=sensors.getTempCByIndex(0);
float temp2= Celcius;
radio.write(&temp2, sizeof(temp2));
}
Supposing Room 1 temp is 10 and Romm 2 temp is 20;
Screen is displaying;
Second 1;
Room 1 temp is 10.0
Room 1 temp is 20.0
Second 2;
Room 1 temp is 10.0
Room 1 temp is 10.0
Second 3;
Room 1 temp is 10.0
Room 1 temp is 0.0
Second 4;
Room 1 temp is 20.0
Room 1 temp is 10.0
Second 5;
Room 1 temp is 10.0
Room 1 temp is 10.0
etc.
There is no pattern, I just typed out a random sequence.