Problema con mi código

Hola,
Estoy escribiendo un código pero tengo un problema, prendo el led con mi Android, lo apago con el sensor y manda un mensaje para que se prenda otro led independiente, pero según las condiciones que tengo se seguirá prendiendo cada que se active el sensor,
¿Cómo le puedo hacer para que solo una vez mande el mensaje? :frowning:

Aquí dejo el código:

char val;
int led = 8;
int sensor = 7;
int calibrationTime = 30;

void setup() {
for(int i = 0; i < calibrationTime; i++){
Serial.print(".");
delay(1000);
}
Serial.println(" done");
Serial.println("SENSOR ACTIVE");
delay(50);

pinMode(led,OUTPUT);
pinMode(sensor,INPUT);
Serial.begin(9600);

}

void loop() {
int l= digitalRead(led);
int p= digitalRead(sensor);

if(Serial.available())
val = Serial.read();

if(val == '1')

{
digitalWrite(led,HIGH);

}

if( p == HIGH)
{digitalWrite(led,LOW);
delay(500);}

if (p==HIGH && l==LOW)
{
Serial.println("2");
}

if(val =='0')
{digitalWrite(led,LOW);}

}

Gracias!!

Hola,

No entiendo muy bien a qué te refieres pero entiendo que es el mensaje "2" lo que quieres mandar sólo 1 vez?

Tal como lo tienes ese mensaje se mandara siempre que el sensor se active y el led esté apagado. Como cuando el sensor se activa apagas el led se ejecutará siempre que se active el sensor.

Lo que puedes hacer es invertir el orden de los if, verificar primero que el sensor este activo y el led apagado y mandar el mensaje y luego si el sensor se activa apagar el led.

PD: el código mételo con las labels de code para la próxima vez

Saludos!