Good day! My first post here, and I'm hoping to have the experience of this awesome forum help me out. I'm extremely new to anything micro-controller, and have spent many of hours on the net figuring stuff out on my own. What I have are two nano clones, two NRF24L01, Sunfounder hall effect switch, and the Adafruit BME280, and a I2C LCD. So far, everything is up and working. My question is, since I'm so new to this I was hoping someone would take a look at my patched together code. Maybe it can be more efficient? or I have something that is not needed? Thanks in advance!
Tx
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <RF24.h>
#include <SPI.h>
#include <nRF24L01.h>
int ticks = 0, Speed = 0;
int hallsensor = 2;
RF24 transmit (7,8);
byte address[5] = "00001";
Adafruit_BME280 bme;
struct package{
float temperature = 0;
float humidity = 0;
float pressure = 0;
float Speed = 0;
};
typedef struct package Package;
Package data;
void pickrpm(){
ticks++;
}
void setup(){
Serial.begin(9600);
pinMode(hallsensor, INPUT);
attachInterrupt(0, pickrpm, FALLING);
bme.begin(0x77);
transmit.begin();
transmit.openWritingPipe(address);
transmit.setPALevel(RF24_PA_MIN);
transmit.setDataRate(RF24_250KBPS);
transmit.setChannel(10);
transmit.stopListening();
}
void loop(){
ticks = 0;
interrupts();
delay (1000);
Serial.print (Speed, DEC);
Serial.print (" RPM\r\n");
Speed = (ticks * 60);
data.temperature = bme.readTemperature() * 9 / 5 + 32;
data.humidity = bme.readHumidity();
data.pressure = bme.readPressure() / 100 / 33.86;
data.Speed = Speed;
transmit.write(&data,sizeof(data));
noInterrupts();
}
Rx
#include <RF24.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <LiquidCrystal_I2C.h>
RF24 receive (7,8);
byte address[5] = "00001";
LiquidCrystal_I2C lcd(0x3F,16,2);
struct package
{
float temperature = 0;
float humidity = 0;
float pressure = 0;
float rpm = 0;
};
typedef struct package Package;
Package data;
void setup(){
lcd.init();
lcd.backlight();
lcd.print("Now receiving");
receive.begin();
receive.openReadingPipe(0,address);
receive.setPALevel(RF24_PA_MIN);
receive.setDataRate(RF24_250KBPS);
receive.setChannel(10);
receive.startListening();
}
void loop(){
if (receive.available())
{
receive.read(&data, sizeof(data));
lcd.init();
lcd.backlight();
lcd.print("T:");
lcd.print(data.temperature,1);
lcd.print((char)223);
lcd.print("F ");
lcd.print("P:");
lcd.print(data.pressure,2);
lcd.setCursor(0,1);
lcd.print("H:");
lcd.print(data.humidity,0);
lcd.print("%");
lcd.setCursor(7,1);
lcd.print("Rpm:");
lcd.print(data.rpm,0);
}
}