Uno code from Original Post
// Board 1 (LCD)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <LCD.h>
#include <SoftwareSerial.h>
#include <DHTesp.h>
#include <SHT31.h>
SoftwareSerial Serial1(2, 3);
//SHT30
SHT31 sht1;
SHT31 sht2;
float C1, C2, C3, C4;
//DHT22
DHTesp dht_tbe;
DHTesp dht_tro;
int tbe = 4;
int tro = 5;
float C5, C6, C7, C8;
//Relay
int relay_alert=6;
//LCD Screen
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// variables to hold the parsed data
float C9, C10, C11, C12, C13, C14, C33, C35, C36;
int C43, C47, C56;
//Serial1 Board2 Receive Connection
const byte numChars = 53;
char receivedChars[numChars];
char tempChars[numChars];
boolean newData = false;
//Global
int l, k;
//============>
void setup() {
Serial.begin(115200);
Serial1.begin(9600);
//DHT22
dht_tbe.setup(tbe, DHTesp::DHT22);
dht_tro.setup(tro, DHTesp::DHT22);
//SHT31
Wire.begin();
sht1.begin(0x44);
sht2.begin(0x45);
//Relay
pinMode(relay_alert, OUTPUT);
digitalWrite(relay_alert, HIGH);
//LCD
lcd.begin(20,4);
lcd.backlight();
//Global
l = k = 0;
}
//============>
void loop() {
//info (START)
Serial1.println();
Serial1.println("Restart Loop");
Serial1.print("Loop ");
Serial1.print(l);
Serial1.print(" Sec:");
int time=(int)(millis()/1000);
Serial1.println(time);
// ********** MEASUREMENTS **********
//SHT31
C1=sht1.getTemperature();
C2=sht1.getHumidity();
C3=sht2.getTemperature();
C4=sht2.getHumidity();
//DHT22
C5 = dht_tbe.getTemperature();
C6 = dht_tbe.getHumidity();
if(isnan(C5)){C5 = 0;}
if(isnan(C6)){C6 = 0;}
C7 = dht_tro.getTemperature();
C8 = dht_tro.getHumidity();
if(isnan(C7)){C7 = 0;}
if(isnan(C8)){C8 = 0;}
C1=C3=C7=C5; //REMOVE LATER
C2=C4=C8=C6; //REMOVE LATER
//C9-C10-C11-C12-C13-C14-C33-C34-C35-C47 Receive
board2_receive();
//ParseData
if (newData == true) {
strcpy(tempChars, receivedChars);
b2_parseData();
newData = false;
k = 0;
}
else {
delay_function();
k++;
}
delay(100);
//Serial Send
serial_send();
//Serial Print
serial_print();
//LCD Function
lcd_function();
//Conditions
if(C47 == 1){
digitalWrite(relay_alert, HIGH);
}
else digitalWrite(relay_alert, LOW);
}
//============>
void board2_receive() {
static boolean recvInProgress = false;
static byte ndx = 0;
char startMarker = '<';
char endMarker = '>';
char rc;
while (Serial.available() > 0 && newData == false) {
rc = Serial.read();
if (recvInProgress == true) {
if (rc != endMarker) {
receivedChars[ndx] = rc;
ndx++;
if (ndx >= numChars) {
ndx = numChars - 1;
}
}
else {
receivedChars[ndx] = '\0';
recvInProgress = false;
ndx = 0;
newData = true;
}
}
else if (rc == startMarker) {
recvInProgress = true;
}
}
Serial1.print("SR-Data Received:");
Serial1.println(receivedChars);
}
//============>
void b2_parseData() {
char * strtokIndx2;
strtokIndx2 = strtok(tempChars,",");
C43 = atoi(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C9 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C10 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C11 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C12 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C13 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C14 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C33 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C35 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C36 = atof(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C47 = atoi(strtokIndx2);
strtokIndx2 = strtok(NULL, ",");
C56 = atoi(strtokIndx2);
}
//============>
void serial_send(){
Serial.print("<");
Serial.print(C1,1);
Serial.print(",");
Serial.print(C2,1);
Serial.print(",");
Serial.print(C3,1);
Serial.print(",");
Serial.print(C4,1);
Serial.print(",");
Serial.print(C5,1);
Serial.print(",");
Serial.print(C6,1);
Serial.print(",");
Serial.print(C7,1);
Serial.print(",");
Serial.print(C8,1);
Serial.print(">");
Serial.println();
Serial1.println("Serial Data Send");
}
//============>
void serial_print(){
Serial1.print("S1=");
Serial1.print(C1);
Serial1.print(" C-TLR S2=");
Serial1.print(C2);
Serial1.println(" %-HLR");
Serial1.print("S3=");
Serial1.print(C3);
Serial1.print(" C-TKO S4=");
Serial1.print(C4);
Serial1.println(" %-HKO");
Serial1.print("S5=");
Serial1.print(C5);
Serial1.print(" C-TBE S6=");
Serial1.print(C6);
Serial1.println(" %-HBE");
Serial1.print("S7=");
Serial1.print(C7);
Serial1.print(" C-TRO S8=");
Serial1.print(C8);
Serial1.println(" %-HRO");
Serial1.print("S9=");
Serial1.print(C9);
Serial1.print(" C-TCR S10=");
Serial1.print(C10);
Serial1.println(" %-HCR");
Serial1.print("S11=");
Serial1.print(C11);
Serial1.print(" C-TBR S12=");
Serial1.print(C12);
Serial1.println(" %-HBR");
Serial1.print("S13=");
Serial1.print(C13);
Serial1.print(" C-TOU S14=");
Serial1.print(C14);
Serial1.println(" %-HOU");
Serial1.println();
Serial1.print("S33=");
Serial1.print(C33);
Serial1.println("cm - Oil Level");
Serial1.print("S35=");
Serial1.print(C35);
Serial1.print(" C-TWB S36=");
Serial1.print(C36);
Serial1.println(" C-TWS");
Serial1.print("Boiler: ");
if(C43 == 1){Serial1.println("On");}
else Serial1.println("Off");
Serial1.print("Lalert: ");
if(C47 == 1){Serial1.println("On");}
else Serial1.println("Off");
Serial1.println();
Serial1.print("Water Selection: ");
if(C56 == 0){Serial1.println("Boiler");}
else Serial1.println("Sun");
Serial1.println();
}
//==========>
void lcd_function(){
Serial1.println("LCD Start");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Oil Level");
lcd.setCursor(0,1);
lcd.print(C33);
lcd.setCursor(5,1);
lcd.print("cm");
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Boiler Temperature");
lcd.setCursor(0,1);
lcd.print(C35);
lcd.setCursor(4,1);
lcd.print("\xDF" "C");
if(C56 == 0){
lcd.setCursor(7,1);
lcd.print("<--");
}
lcd.setCursor(13,1);
if(C43 == 1){
lcd.print("On");
}
else lcd.print("Off");
lcd.setCursor(0,2);
lcd.print("Solar Temperature");
lcd.setCursor(0,3);
lcd.print(C36);
lcd.setCursor(4,3);
lcd.print("\xDF" "C");
if(C56 == 0){
lcd.setCursor(7,1);
lcd.print("<--");
}
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("LR:");
lcd.setCursor(4,0);
lcd.print(C1);
lcd.setCursor(8,0);
lcd.print("\xDF" "C");
lcd.setCursor(12,0);
lcd.print(C2);
lcd.setCursor(16,0);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("KO:");
lcd.setCursor(4,1);
lcd.print(C3);
lcd.setCursor(8,1);
lcd.print("\xDF" "C");
lcd.setCursor(12,1);
lcd.print(C4);
lcd.setCursor(16,1);
lcd.print("%");
lcd.setCursor(0,2);
lcd.print("BE:");
lcd.setCursor(4,2);
lcd.print(C5);
lcd.setCursor(8,2);
lcd.print("\xDF" "C");
lcd.setCursor(12,2);
lcd.print(C6);
lcd.setCursor(16,2);
lcd.print("%");
lcd.setCursor(0,3);
lcd.print("RO:");
lcd.setCursor(4,3);
lcd.print(C7);
lcd.setCursor(8,3);
lcd.print("\xDF" "C");
lcd.setCursor(12,3);
lcd.print(C8);
lcd.setCursor(16,3);
lcd.print("%");
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("CR:");
lcd.setCursor(4,0);
lcd.print(C9);
lcd.setCursor(8,0);
lcd.print("\xDF" "C");
lcd.setCursor(12,0);
lcd.print(C10);
lcd.setCursor(16,0);
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("BR:");
lcd.setCursor(4,1);
lcd.print(C11);
lcd.setCursor(8,1);
lcd.print("\xDF" "C");
lcd.setCursor(12,1);
lcd.print(C12);
lcd.setCursor(16,1);
lcd.print("%");
lcd.setCursor(0,2);
lcd.print("OU:");
lcd.setCursor(4,2);
lcd.print(C13);
lcd.setCursor(8,2);
lcd.print("\xDF" "C");
lcd.setCursor(12,2);
lcd.print(C14);
lcd.setCursor(16,2);
lcd.print("%");
delay(2000);
Serial1.println("LCD END");
}
//==========>
void delay_function(){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Receiving");
delay (1000);
if(k > 10){
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Problem...");
delay (10000);
}
}
//=========END
…R