Ciao a tutti, chi mi aiuta a capire questo problema ?
int alzadx = 2; // imposta il pin 2 alza tenda destra
int abbassadx = 3; // imposta il pin 3 abbassa tenda destra
int alzasx = 4; // imposta il pin 4 alza tenda sinistra
int abbassasx = 5; // imposta il pin 5 abbassa tenda sinistra
boolean statoingresso = false;
boolean statocucina = false;
boolean statopioggia = false;
const int sensorValueingresso = 200; //imposta il valore del sensore 970
const int sensorValuecucina = 250; // 1000
//const int sensorValuepioggia = 600;
String readString;
void setup() {
Serial.begin(9600);
pinMode(alzadx, OUTPUT);
pinMode(abbassadx, OUTPUT);
digitalWrite(alzadx, HIGH);
digitalWrite(abbassadx, HIGH);
pinMode(alzasx, OUTPUT);
pinMode(abbassasx, OUTPUT);
digitalWrite(alzasx, HIGH);
digitalWrite(abbassasx, HIGH);
}
void loop() {
// CONTROLLA SE PIOVE ALZA TUTTE LE TENDE
/* int sensorepioggia = analogRead (A2);
Serial.println(sensorepioggia);
delay(1000);
if (sensorepioggia < sensorValuepioggia) {
if (statopioggia == false) {
delay(4000);
Serial.println("C987789");
delay(1000);
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000);
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
statopioggia = true;
delay(4000);
}
}
if (sensorepioggia > sensorValuepioggia){
statopioggia = false;
}*/
// CONTROLLA LA LUMINOSITà ESTERNA SE è NOTTE ALZA LE TENDE INGRESSO
int sensoringresso = analogRead(A4); // A2
Serial.println(sensoringresso);
delay(4000);
if (sensoringresso < sensorValueingresso) {
if (statoingresso == false) {
delay(1000);
Serial.println("987789");
delay(1000);
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(1000);
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
statoingresso = true;
delay(4000);
}
}
if (sensoringresso > sensorValueingresso){
statoingresso = false;
}
// CONTROLLA LA LUMINOSITà ESTERNA SE è NOTTE ALZA LE TENDE CUCINA
if (sensoringresso < sensorValuecucina) {
if (statocucina == false) {
delay(1000);
Serial.println("987789");
delay(1000);
statocucina = true;
delay(4000);
}
}
if (sensoringresso > sensorValuecucina){
statocucina = false;
}
while (Serial.available()) {
delay(3);
char c = Serial.read();
readString += c;
}
if (readString.length() >0) {
Serial.println(readString);
if (readString == "ALZATENDAINGRESSO")
{
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000);
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
delay(2000);
}
// controlla la condizione se si possono abbassare le tende
if (readString == "ABBASSATENDAINGRESSO" || sensoringresso <= 990 )
{
Serial.println("AllertaTendeIngresso");
}
if (readString == "ABBASSATENDAINGRESSO" || sensoringresso >= 995)
{
digitalWrite(abbassadx, LOW);
digitalWrite(abbassasx, LOW);
delay(40000);
digitalWrite(abbassadx, HIGH);
digitalWrite(abbassasx, HIGH);
}
if (readString == "ALZATENDATUTTO")
{
Serial.println("987789");
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000);
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
}
if (readString == "ABBASSATENDATUTTO" || sensoringresso >= 1000 )
{
digitalWrite(abbassadx, LOW);
digitalWrite(abbassasx, LOW);
Serial.println("997997");
delay(40000);
digitalWrite(abbassadx, HIGH);
digitalWrite(abbassasx, HIGH);
}
if (readString == "ABBASSATENDATUTTO" || sensoringresso <= 1000 )
{
Serial.println("AllertaTendeTutto");
}
readString="";
}
}
C'è una parte del codice che ad una condizione mi manda altri segnali al seriale che non deve perchè ?
Quando mando un segnale ALZATENDEINGRESSO questa parte del codice
if (readString.length() >0) {
Serial.println(readString);
if (readString == "ALZATENDAINGRESSO")
{
digitalWrite(alzadx, LOW);
digitalWrite(alzasx, LOW);
delay(40000);
digitalWrite(alzadx, HIGH);
digitalWrite(alzasx, HIGH);
delay(2000);
}
il lavoro lo fa bene, come finisce la condizione if mi va a scrive queste due condizioni che non dovrebbe
if (readString == "ABBASSATENDAINGRESSO" || sensoringresso <= 990 )
{
Serial.println("AllertaTendeIngresso");
}
e questa
if (readString == "ABBASSATENDATUTTO" || sensoringresso <= 1000 )
{
Serial.println("AllertaTendeTutto");
}
come regola le due condizioni if non sono reali ma il codice le esegue comunque scrivendomi su seriale le due voci ("AllertaTendeIngresso") e ("AlletaTendeTutto")
Perche ?