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