@GolamMostafa: thanks for your very clear explanation.
I cleaned up the code and make it meet my requirements:
#include <Nextion.h>
#include <DHT.h>
// Humidity/Temp sensor
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Pins
// Moisture Sensor pins
int sensorPin1 = A0;
int sensorPin2 = A1;
int sensorPin3 = A2;
int sensorPin4 = A3;
int sensorPin5 = A4;
int sensorPin6 = A5;
// Moisture Sensor Relais
int sensorRelais = 10;
// Solenoid Relais output pins
int relaisPin1 = 2;
int relaisPin2 = 3;
int relaisPin3 = 4;
int relaisPin4 = 5;
int relaisPin5 = 6;
int relaisPin6 = 7;
///// Variables
byte sensorVal1;
byte sensorVal2;
byte sensorVal3;
byte sensorVal4;
byte sensorVal5;
byte sensorVal6;
byte bedSet1;
byte bedSet2;
byte bedSet3;
byte bedSet4;
byte bedSet5;
byte bedSet6;
byte fanSet;
bool bedWater1;
bool bedWater2;
bool bedWater3;
bool bedWater4;
bool bedWater5;
bool bedWater6;
int sensorMins;
byte waterMins;
unsigned long sensorInterval = 10000;
unsigned long waterInterval = 10000;
unsigned long sensorTimer = 0;
unsigned long printTimer;
unsigned long waterTimer1;
unsigned long waterTimer2;
unsigned long waterTimer3;
unsigned long waterTimer4;
unsigned long waterTimer5;
unsigned long waterTimer6;
int sensorHold = 0;
float temperature = 0.0f;
float humidity = 0.0f;
NexButton b0 = NexButton(0, 16, "b0");
NexButton b1 = NexButton(0, 17, "b1");
NexButton b2 = NexButton(0, 20, "b2");
NexButton b3 = NexButton(0, 21, "b3");
NexButton b4 = NexButton(0, 23, "b4");
NexButton b5 = NexButton(0, 24, "b5");
NexButton b6 = NexButton(0, 26, "b6");
NexButton b7 = NexButton(0, 27, "b7");
NexButton b8 = NexButton(0, 29, "b8");
NexButton b9 = NexButton(0, 30, "b9");
NexButton b10 = NexButton(0, 32, "b10");
NexButton b11 = NexButton(0, 33, "b11");
NexButton b12 = NexButton(0, 35, "b12");
NexButton b13 = NexButton(0, 36, "b13");
NexButton b14 = NexButton(0, 43, "b14");
NexButton b15 = NexButton(0, 44, "b15");
NexButton b16 = NexButton(0, 46, "b16");
NexButton b17 = NexButton(0, 47, "b17");
NexRadio r0 = NexRadio(0, 1, "r0");
NexRadio r1 = NexRadio(0, 2, "r1");
NexRadio r2 = NexRadio(0, 3, "r2");
NexRadio r3 = NexRadio(0, 4, "r3");
NexRadio r4 = NexRadio(0, 5, "r4");
NexRadio r5 = NexRadio(0, 6, "r5");
NexCheckbox c1 = NexCheckbox(0, 14, "c1");
NexCheckbox c2 = NexCheckbox(0, 15, "c2");
NexPage page0 = NexPage(0, 0, "page0");
NexTouch *nex_listen_list[] =
{
&b0,
&b1,
&b2,
&b3,
&b4,
&b5,
&b6,
&b7,
&b8,
&b9,
&b10,
&b11,
&b12,
&b13,
&b14,
&b15,
&b16,
&b17,
&r0,
&r1,
&r2,
&r3,
&r4,
&r5,
&c1,
&c2,
&page0,
NULL // String terminated
}; // End of touch event list
// Nextion callbacks
void b0PushCallback(void *ptr)
{
bedSet1 = bedSet1 - 5;
}
void b1PushCallback(void *ptr)
{
bedSet1 = bedSet1 + 5;
}
void b2PushCallback(void *ptr)
{
bedSet2 = bedSet2 - 5;
}
void b3PushCallback(void *ptr)
{
bedSet2 = bedSet2 + 5;
}
void b4PushCallback(void *ptr)
{
bedSet3 = bedSet3 - 5;
}
void b5PushCallback(void *ptr)
{
bedSet3 = bedSet3 + 5;
}
void b6PushCallback(void *ptr)
{
bedSet4 = bedSet4 - 5;
}
void b7PushCallback(void *ptr)
{
bedSet4 = bedSet4 + 5;
}
void b8PushCallback(void *ptr)
{
bedSet5 = bedSet5 - 5;
}
void b9PushCallback(void *ptr)
{
bedSet5 = bedSet5 + 5;
}
void b10PushCallback(void *ptr)
{
bedSet6 = bedSet6 - 5;
}
void b11PushCallback(void *ptr)
{
bedSet6 = bedSet6 + 5;
}
void b12PushCallback(void *ptr)
{
fanSet = fanSet - 1;
}
void b13PushCallback(void *ptr)
{
fanSet = fanSet + 1;
}
void b14PushCallback(void *ptr)
{
sensorMins = sensorMins - 1;
sensorInterval = sensorMins * 60000;
}
void b15PushCallback(void *ptr)
{
sensorMins = sensorMins + 1;
sensorInterval = sensorMins * 60000;
}
void b16PushCallback(void *ptr)
{
waterMins = waterMins - 1;
waterInterval = waterMins * 60000;
}
void b17PushCallback(void *ptr)
{
waterMins = waterMins + 1;
waterInterval = waterMins * 60000;
}
void setup()
{
Serial.begin(9600);
dht.begin();
pinMode(sensorPin1, INPUT);
pinMode(sensorPin2, INPUT);
pinMode(sensorPin3, INPUT);
pinMode(sensorPin4, INPUT);
pinMode(sensorPin5, INPUT);
pinMode(sensorPin6, INPUT);
pinMode(sensorRelais, OUTPUT);
pinMode(relaisPin1, OUTPUT);
pinMode(relaisPin2, OUTPUT);
pinMode(relaisPin3, OUTPUT);
pinMode(relaisPin4, OUTPUT);
pinMode(relaisPin5, OUTPUT);
pinMode(relaisPin6, OUTPUT);
pinMode(8, INPUT);
b0.attachPush(b0PushCallback, &b0);
b1.attachPush(b1PushCallback, &b1);
b2.attachPush(b2PushCallback, &b2);
b3.attachPush(b3PushCallback, &b3);
b4.attachPush(b4PushCallback, &b4);
b5.attachPush(b5PushCallback, &b5);
b6.attachPush(b6PushCallback, &b6);
b7.attachPush(b7PushCallback, &b7);
b8.attachPush(b8PushCallback, &b8);
b9.attachPush(b9PushCallback, &b9);
b10.attachPush(b10PushCallback, &b10);
b11.attachPush(b11PushCallback, &b11);
b12.attachPush(b12PushCallback, &b12);
b13.attachPush(b13PushCallback, &b13);
b14.attachPush(b14PushCallback, &b14);
b15.attachPush(b15PushCallback, &b15);
b16.attachPush(b16PushCallback, &b16);
b17.attachPush(b17PushCallback, &b17);
printTimer = millis();
}
void loop() {
readSensors();
printValues();
activateSolenoids();
deactivateSolenoids();
readTemphum();
nexLoop(nex_listen_list);
}
void readSensors()
{
if (millis() > sensorTimer + sensorInterval) {
sensorTimer = millis();
digitalWrite(sensorRelais, HIGH);
delay(500);
sensorVal1 = analogRead(sensorPin1) / 10;
sensorVal2 = analogRead(sensorPin2) / 10;
sensorVal3 = analogRead(sensorPin3) / 10;
sensorVal4 = analogRead(sensorPin4) / 10;
sensorVal5 = analogRead(sensorPin5) / 10;
sensorVal6 = analogRead(sensorPin6) / 10;
// delay(500);
digitalWrite(sensorRelais, LOW);
}
}
void readTemphum()
{
humidity = dht.readHumidity();
temperature = dht.readTemperature();
}
void activateSolenoids()
{
if (sensorVal1 < bedSet1) {
waterTimer1 = millis();
digitalWrite(relaisPin1, LOW);
}
if (sensorVal2 < bedSet2) {
waterTimer2 = millis();
digitalWrite(relaisPin2, LOW);
}
if (sensorVal3 < bedSet3) {
waterTimer3 = millis();
digitalWrite(relaisPin3, LOW);
}
if (sensorVal4 < bedSet4) {
waterTimer4 = millis();
digitalWrite(relaisPin4, LOW);
}
if (sensorVal5 < bedSet5) {
waterTimer5 = millis();
digitalWrite(relaisPin5, LOW);
}
if (sensorVal6 < bedSet6) {
waterTimer6 = millis();
digitalWrite(relaisPin6, LOW);
}
}
void deactivateSolenoids()
{
if (millis() > waterTimer1 + waterInterval) {
digitalWrite(relaisPin1, HIGH);
}
if (millis() > waterTimer2 + waterInterval) {
digitalWrite(relaisPin2, HIGH);
}
if (millis() > waterTimer3 + waterInterval) {
digitalWrite(relaisPin3, HIGH);
}
if (millis() > waterTimer4 + waterInterval) {
digitalWrite(relaisPin4, HIGH);
}
if (millis() > waterTimer5 + waterInterval) {
digitalWrite(relaisPin5, HIGH);
}
if (millis() > waterTimer6 + waterInterval) {
digitalWrite(relaisPin6, HIGH);
}
}
void printValues()
{
if (millis() - printTimer > 500) {
// printTimer = millis();
Serial.print("n0.val=");
Serial.print(bedSet1);
endNextionCommand();
Serial.print("n1.val=");
Serial.print(fanSet);
endNextionCommand();
Serial.print("n2.val=");
Serial.print(bedSet2);
endNextionCommand();
Serial.print("n3.val=");
Serial.print(bedSet3);
endNextionCommand();
Serial.print("n4.val=");
Serial.print(bedSet4);
endNextionCommand();
Serial.print("n5.val=");
Serial.print(bedSet5);
endNextionCommand();
Serial.print("n14.val=");
Serial.print(bedSet6);
endNextionCommand();
Serial.print("n6.val=");
Serial.print(sensorVal1);
endNextionCommand();
Serial.print("n9.val=");
Serial.print(sensorVal2);
endNextionCommand();
Serial.print("n7.val=");
Serial.print(sensorVal3);
endNextionCommand();
Serial.print("n10.val=");
Serial.print(sensorVal4);
endNextionCommand();
Serial.print("n8.val=");
Serial.print(sensorVal5);
endNextionCommand();
Serial.print("n11.val=");
Serial.print(sensorVal6);
endNextionCommand();
Serial.print("n15.val=");
Serial.print(sensorMins);
endNextionCommand();
Serial.print("n16.val=");
Serial.print(waterMins);
endNextionCommand();
String command = "humidity.txt=\"" + String(humidity) + "\"";
Serial.print(command);
endNextionCommand();
String command2 = "temperature.txt=\"" + String(temperature) + "\"";
Serial.print(command2);
endNextionCommand();
}
}
void endNextionCommand()
{
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
}