comando bleutooth e pulsante per accensione led

Mi potete consigliare come comandare un led (accensione e spegnimento) tramite bluetooth HC-06 e da pulsante diretto su Arduino UNO.

Il problema che non riesco a spegnere il led da pulsante.

Allego porzione di sketch:

// CONTROLLO 4 RELE' E UN LN498N (DOPPIO MOTORE) TRAMITE HC-06 E 2 FINECORSA PER AVANTI INDIETRO MOTORI

int ledPin1 = 2; // ledpin è un relè di uscita 5
int ledPin2 = 3; // ledpin è un relè di uscita 6
int ledPin3 = 4; // ledpin è un relè di uscita 7
int ledPin4 = 5; // ledpin è un relè di uscita 8

// L298n variabili controllo motore

int M1_A = 12; // motore 1 avanti
int M1_PWM = 11; // velocità motore 1
int M1_B = 10; // motore 1 indietro

int M2_A = 9; // motore 2 avanti
int M2_PWM = 8; // velocità motore 2
int M2_B = 7; // motore 2 indietro

// finecorsa azionamento serratura

int FC_UP = 6; // finecorsa tutta aperta
int FC_CH = 13; // finecorsa tutta chiusa
int FINECORSA_UP=0; // parte con valore uguale a 0 per evitare errori di lettura
int FINECORSA_CH=0; // parte con valore uguale a 0 per evitare errori di lettura

// variabile per memorizzare valore di velocità
int speed_val = 255;

//////////////////////////////

String readString;

void setup()
{
TCCR2B = TCCR2B & 0b11111000 | 0x01; // cambiare la frequenza PWM per pin 3 e da 11 a 32 kHz in modo non ci sarà alcun problema di rumore motore

// inizializzo le comunicazioni seriali a 9600 baud:
Serial.begin(9600);

// dichiarazione uscite Led/relè
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(ledPin3, OUTPUT);
pinMode(ledPin4, OUTPUT);

// dichiarazione uscite controllo motori
pinMode(M1_A, OUTPUT);
pinMode(M1_PWM, OUTPUT);
pinMode(M1_B, OUTPUT);
pinMode(M2_A, OUTPUT);
pinMode(M2_PWM, OUTPUT);
pinMode(M2_B, OUTPUT);
pinMode(FC_UP, INPUT);
pinMode(FC_CH, INPUT);

delay(500); // RITARDO DI 0,5S PRIMA DI PROCEDERE

}
void loop()
{
int FINECORSA_UP = digitalRead(FC_UP); // SCRIVI SU UN REGISTRO
int FINECORSA_CH = digitalRead(FC_CH); // SCRIVI SU UN REGISTRO

while ( Serial.available() ) // Legge se i valori
{
// Mentre ci sono dati nel buffer
delay( 3 );
char c = Serial.read();
readString += c; // costruisci la stringa - “on” or “off”
}
if ( readString.length() > 0 )

//COMANDA I RELE' DI USCITA O LED
{
Serial.println( readString );
if ( readString == "on1" )
{
digitalWrite( ledPin1, LOW);
}
if ( readString == "off1" )
{
digitalWrite( ledPin1, HIGH );
}
if ( readString == "on2" )
{
digitalWrite( ledPin2, LOW ) ;
}
if ( readString == "off2" )
{
digitalWrite( ledPin2, HIGH );
}
if ( readString == "on3" )
{
digitalWrite( ledPin3, LOW ) ;
}
if ( readString == "off3" )
{
digitalWrite( ledPin3, HIGH );
}
if ( readString == "on4" )
{
digitalWrite( ledPin4, LOW ) ;
}
if ( readString == "off4" )
{
digitalWrite( ledPin4, HIGH );
}

// STOP DI EMERGENZA - MOTORE 1 INDIETRO E MOTORE 2 FERMO
if ( readString == "stop")
{
digitalWrite( M2_B, LOW );
digitalWrite( M2_A, LOW );
analogWrite( M2_PWM, LOW );
digitalWrite( M1_B, LOW );
digitalWrite( M1_A, LOW );
digitalWrite( M1_PWM, LOW );
}

// MOTORE 1 AVANTI E MOTORE 2 FERMO
if ( readString == "m1av" )
{
if (FINECORSA_UP == LOW) // SE IL FINECORSA NON è ATTIVO ALLORA PERMETTI COMANDO APERTURA
{
Serial.print ("FC OFF SERRATURA APERTA"); //SCRIVI SUL MONITOR

digitalWrite( M1_B, LOW );
digitalWrite( M1_A, HIGH );
digitalWrite( M2_B, LOW );
digitalWrite( M2_A, LOW );
digitalWrite( M2_PWM, LOW );
}}

// MOTORE 1 INDIETRO E MOTORE 2 FERMO
if ( readString == "m1ind" )
{
if (FINECORSA_CH == LOW) // SE IL FINECORSA NON è ATTIVO ALLORA PERMETTI COMANDO CHIUSURA
{
Serial.print ("FC OFF SERRATURA CHIUSA"); //SCRIVI SUL MONITOR

digitalWrite( M1_B, HIGH );
digitalWrite( M1_A, LOW );
digitalWrite( M2_B, LOW );
digitalWrite( M2_A, LOW );
digitalWrite( M2_PWM, LOW );
}}

if ( readString == "m2av" )
{ // MOTORE 2 AVANTI E MOTORE 1 FERMO
digitalWrite( M2_B, LOW );
digitalWrite( M2_A, HIGH );
digitalWrite( M1_B, LOW );
digitalWrite( M1_A, LOW );
digitalWrite( M1_PWM, LOW );
delay (18000); // tempo max funzionamento motore di emergenza
digitalWrite( M2_A, LOW );

}
if ( readString == "m2ind" )
{ // MOTORE 2 INDIETRO E MOTORE 1 FERMO
digitalWrite( M2_B, HIGH );
digitalWrite( M2_A, LOW );
digitalWrite( M1_B, LOW );
digitalWrite( M1_A, LOW );
digitalWrite( M1_PWM, LOW );
delay(18000); // tempo max funzionamento motore di emergenza
digitalWrite( M2_B, LOW );

}

readString = ""; //SVUOTA COMANDO IN INGRESSO

}}

Prima di tutto, nella sezione in lingua Inglese si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione, poi, essendo questo il tuo primo post, ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione) e di leggere con attenzione il REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, edita (in basso a destra del post, bottone More -> Modify) il tuo post e racchiudi il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra). Grazie. :slight_smile:

Guglielmo