Hola a todos
He instalado una aplicación en mi celular androide con MIT app Inventor 2 en la cual envío un 1, 2 y un 3 en formato texto mediante 3 botones, en un arduino leonardo recibo los valores los cuales los veo por la puerta serial del PC, pero el problema que surge que no puedo discriminar cada uno de ellos mediante if char o mediante case char, desconozco que realmente esta pasando .....si alguien me puede apoyar
bt_funciona_ok__pero_no_discrima_case00.ino (979 Bytes)
leonardo bluestick.pdf (6.57 KB)
En vez de:
Serial.write(BT.read());
inn = BT.read();
Intenta:
inn = BT.read();
Serial.write(inn);
Lo que sucede es que si ya lo leíste una vez, no estará disponible en el segundo intento.
La comunicación serial tiene un búfer (memoria temporal que acumula los datos entrantes), y a medida que estos se vayan leyendo, van desapareciendo de ese búfer. En caso ocurría lo siguiente:
Llegó solo un caracter, lo leo; entonces el búfer se vació. Intento leer otra vez, ya no hay nada que leer porque el búfer se había vaciado antes (o en su defecto lee el caracter '\0' o valor númerico cero).
De hecho, BT.available() retorna cuántos bytes sin leer hay en el búfer. Si no hay nada, entonces retorna cero (y cero equivale a false en contexto booleano)
Las imágenes y los sketch no se adjuntan, si lees las normas del foro ahí te dice como hacerlo. Tenemos dos excepciones, el PDF si, debes adjuntarlo y el sketch cuando es muy grande.
Por favor edita tu mensaje de acuerdo con las normas del foro.