Hi,
Utilising an nrf24l01 and an oled display with the adafruit library.
It is used to display the data the nrf24l01 collects i.e. temperature. However as it is displaying twobdiffrent temperarures, the bottom one flickers on the refresh but the top value does not?
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OneWire.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
float temp1, temp2;
String ID = "TP2 ";
RF24 radio(9, 10);
const uint64_t pipes[3] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0E2LL, 0xF0F0F0F0E3LL};
void setup(void)
{
Serial.begin(9600);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
radio.begin();
radio.setDataRate(RF24_250KBPS);
radio.openReadingPipe(1,pipes[1]);
radio.openReadingPipe(3, pipes[2]);
radio.startListening();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(5, 20);
// Display static text
display.clearDisplay();
display.println("connecting....");
display.display();
delay(1000);
}
void loop(void)
{
display.clearDisplay();
delay(500);
if ( radio.available() )
{
delay(50);
radio.read(&temp1, sizeof(temp1));
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(9, 20);
display.println(temp1);
display.display();
}
if ( radio.available() )
{
delay(50);
radio.read(&temp2, sizeof(temp2));
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(9, 40);
display.println(temp2);
display.display();
}
else
{
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(9, 0);
display.println("Error");
display.display();
}
delay(1000);
}