Scusate ma non riesco a risolvere anche se penso che si tratti un errore di sintassi.
l'errore viene indicato su l'ultimo "if"
// SCHEDA RELE VOLT 5
// LCD TIPO QC2004A volT 5,I2C volt 5
// CONNESSIONE DHT
// Connettere attacco 1 (a sinistra) a +5V di Arduino
// Connettere attacco OUT del sensore al pin 2
// Connettere attacco 4 (a destra) del sensore a GROUND
// Connettere una resistenza da 10K tra attacco 2 (data) e attacco 1 (power) del sensore
// CONNESSIONE SENSORI UMIDITA' TERRA
// connettere il pin A0 al sensore 1
// connettere il pin A1 al sensore 2
// connettere il primo rele (quello della pompa che porta acqua alle piante) al pin 6
// CONNESSIONE LCD con I2C( i 2 LCD )
// connettere SCL al pin A5
// connettere SDA al pin A4
// connettere VCC al pin +5V
// connettere GND al pin GND
// CONNESSIONE DS3231
// connettere SCL al pin A5
// connettere SDA al pin A4
// connettere VCC al pin +5
// connettere GND al pin GND
//CONNESSIONE LETTORE SD
// connettere CS al pin 10
// connettere SCX al pin 13
// connettere MOSI al pin 11
// connettre MISo al pin 12
// CONNESSIONE RELE'
// connettere pin 5 al IN1 della scheda rele'( VENTOLA)
// connettere pin 6 al IN2 della scheda rele'(acqua piante)
// connettere pin 7 al IN3 della scheda rele'(vaporizzazione/umidità)
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <Adafruit_Sensor.h>
#include <EEPROM.h>
#include "DHT.h"
#include <LiquidCrystal_I2C.h>
int sensoreTerra1 = A0;
int sensoreTerra2 = A1;
// variabili per calcolare quante volte vengono eccitati i relè
int cambio5 = 0 ; // conteggio dei cambi di stato del pin 5
int valore5 = 0; //valore del pin 5
int ultimovalore5 = 0;//ultimo valore pin 5
int cambio6 = 0 ; // conteggio dei cambi di stato del pin 6
int valore6 = 0; //valore del pin 6
int ultimovalore6 = 0;//ultimo valore pin 6
int cambio7 = 0 ; // conteggio dei cambi di stato del pin 7
int valore7 = 0; //valore del pin 7
int ultimovalore7 = 0;//ultimo valore pin 7
int sensorValue1 = 0;
int sensorValue2 = 0;
double temp1 = 0.0;
double MediaSensori1 = 0.0;
LiquidCrystal_I2C lcd1(0x27, 20, 4);
LiquidCrystal_I2C lcd2(0x23, 20, 4);
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
const int reset = 10;
int statoreset = 0;
byte TMIN;
byte TMAX;
byte UMIN;
byte UMAX;
void setup() {
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(sensoreTerra1, INPUT);
pinMode(sensoreTerra2, INPUT);
temp1 = 0.0;
temp1 = temp1 + sensorValue1 + sensorValue2;
MediaSensori1 = (temp1 / 2);
Serial.begin(9600);
dht.begin();//inizializzo dht
lcd1.init(); // inizializzo lcd n.1
lcd1.backlight();// accende lcd n.1
lcd2.init(); // inizializzo lcd n.2
lcd2.backlight();// accende lcd n.2
//scrivo sul display i caratteri fissi
lcd1.print("TEMP ATTUALE");
lcd1.setCursor(0, 1);
lcd1.print("MIN");
lcd1.setCursor(9, 1);
lcd1.print("MAX");
lcd1.setCursor(0, 2);
lcd1.print("UMID ATTUALE");
lcd1.setCursor(0, 3);
lcd1.print("MIN");
lcd1.setCursor(9, 3);
lcd1.print("MAX");
lcd2.print("ATT.ACQUA PIAN :");
lcd2.setCursor(0, 1);
lcd2.print("ATT.POMPA UMI. :");
lcd2.setCursor(0, 2);
lcd2.print("ATT.VENTOLA :");
lcd2.setCursor(0, 3);
// TMIN,TMAX,UMIN e UMAX assumono i valori contenuti nella memoria EEPROM
TMIN = EEPROM.read(1); // temperatura minimna
TMAX = EEPROM.read(2); // temperatura massima
UMIN = EEPROM.read(3); // umidita minima
UMAX = EEPROM.read(4); // umidita massima
}
void loop() {
//verifica sensori di terra ed eventualmente attiva relè1 e pompa
sensorValue1 = analogRead(sensoreTerra1);
sensorValue2 = analogRead(sensoreTerra2);
temp1 = 0.0;
temp1 = temp1 + sensorValue1 + sensorValue2;
MediaSensori1 = (temp1 / 2);
int t = dht.readTemperature();
int u = dht.readHumidity();
//conteggio cambio di stato pin 5 (VENTOLA)
valore5 = digitalRead(5);
if ( valore5 != ultimovalore5 and valore5 == LOW)
{
cambio6++;
lcd2.setCursor(16, 0);
lcd2.print(cambio5);
}
ultimovalore5 = valore5 ;
lcd2.setCursor(16, 2);
lcd2.print(cambio5);
//conteggio cambio di stato pin 6 (IRRIGAZIONE PIANTE)
valore6 = digitalRead(6);
if ( valore6 != ultimovalore6 and valore6 == LOW)
{
cambio6++;
lcd2.setCursor(16, 0);
lcd2.print(cambio6);
}
ultimovalore6 = valore6 ;
//conteggio cambio di stato pin 7 (UMIDITA' VAPORIZZAZIONE)
valore7 = digitalRead(7);
if ( valore7 != ultimovalore7 and valore7 == LOW)
{
cambio7++;
lcd2.setCursor(16, 1);
lcd2.print(cambio7);
}
ultimovalore7 = valore7 ;
// attivazione relè per ventola se temperatura è > 27°
if (t > 27)
{
digitalWrite( 5, LOW);// eccita relè per azionare ventola
}
else
{
digitalWrite( 5, HIGH);
}
// attivazione relè acqua piante,se terreno è secco
if (MediaSensori1 > 600)
{
digitalWrite(6, LOW); // eccita relè per acqua alle piante
}
else
{
digitalWrite(6, HIGH);
}
}
// attivazione relè per umidità (vaporizzatori)
if (u < 60 )
{
digitalWrite( 7, LOW);// eccita relè per umidità (vaporizzatori)
}
else
{
digitalWrite( 7, HIGH);
}
if (t > TMAX)
{
TMAX = t;
EEPROM.write(2, t);
// se la temperatura supera il dato MAX allora modifico il dato MAX
// scrivo questo dato anche nella eeprom
}
if (t < TMIN)
{
TMIN = t;
EEPROM.write(1, t);
// se la temperatura è minore del dato MIN allora modifico il dato MIN
// scrivo questo dato anche nella eeprom
// int u = dht.readHumidity();
}
if (u > UMAX)
{
UMAX = u;
EEPROM.write(4, u);
// se lìumidità supera il dato MAX allora modifico il dato MAX
// scrivo questo dato anche nella eeprom
}
if (u < UMIN)
{
UMIN = u;
EEPROM.write(3, u);
// se la temperatura è minore del dato MIN allora modifico il dato MIN
// scrivo questo dato anche nella eeprom
}
// premendo il tasto reset porto MIN e MAX al valore di temp attuale
statoreset = digitalRead (reset);
if ( statoreset = LOW)
{
TMIN = t;
TMAX = t;
UMIN = u;
UMAX = u;
}
// scrittura dati sul display
lcd.setCursor(14, 0);
lcd.print(t);
lcd.setCursor(5, 1);
lcd.print(TMIN);
lcd.setCursor(13, 1);
lcd.print(TMAX);
lcd.setCursor(14, 2);
lcd.print(u);
lcd.setCursor(5, 3);
lcd.print(UMIN);
lcd.setCursor(13, 3);
lcd.print(UMAX);
delay(100);
}