Buenas tardes
Tengo una consulta ya que soy algo nuevo el lo del bluethoot, realizo un programa donde controlo 4 leds, dos con alto y bajo y los otros dos usando dímero, pero tarda 1 o 2 segundos en responder, pero si hago los programas separados responde de inmediato, y como puedo lograr que cuando envie el valor del bluethoot solo tome el primero, porque si presiono mas veces, imprime la palabra dos o 3 veces y ya no lo toma.
Saludos y pasen un excelente dia…
#include <SoftwareSerial.h>
//Comunicacion entre adrduino y la computadora
//Crear un objeto
SoftwareSerial miBT(10, 11);
String DATO;
String BRILLO;
long x;
long y;
String S;
int LEDA = 2;
int LEDA2 = 4;
int LEDB = 6;
int LEDB2 = 5;
void setup() {
Serial.begin(9600);
miBT.begin(115200);
pinMode(LEDA, OUTPUT);
pinMode(LEDA2, OUTPUT);
pinMode(LEDB, OUTPUT);
pinMode(LEDB2, OUTPUT);
}
void loop()
{
while (miBT.available()>0) //Devuelve datos cuando es verdadero
{
delay(5);
S = miBT.readString();
DATO = S;
x = DATO.toInt();
y = DATO.toInt();
while (DATO == "On1")
{digitalWrite(LEDA, !digitalRead(LEDA));return;}
while (DATO == "On2")
{digitalWrite(LEDA2, !digitalRead(LEDA2));return;}
while ((DATO <= "1800") && (DATO >= "1000"))
{analogWrite(LEDB, map(x, 1000, 1800, 0 ,255));return;}
while ((DATO <= "2800") && (DATO >= "2000"))
{ analogWrite(LEDB2, map(y, 2000, 2800, 0 ,255));return;}
// miBT.flush(); // Vaciar el búfer para evitar cadenas de texto fragmentadas
Serial.println(DATO);
delay(5);
}
}
Led Dimmer.txt (1.11 KB)