|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

NodeMCU en español
NodeMCU - Juan Antonio Villalpando

-- Tutorial de NodeMCU en español --

Volver al índice del tutorial NodeMCU

____________________________

155.- Wemos D1 R32 ESP32. App Inventor obtiene el estado de dos pulsadores. Bluetooth.

_________________________________
10.-
App Inventor obtiene el estado de dos pulsadores. Bluetooth.

p155wemos_pulsadores_BT.aia

- Pulsamos un Botón en App Inventor y obtenemos el estado de dos pulsadores.

_________________________________
- Diseño.

- El ByteDelimitador = 10, significa que cuando reciba este caracter ha llegado el fin de envío.
- El caracter 10 corresponderá en el código del ESP32 a "\n"

- Es decir, el ESP32 enviará "\n" indicando fin de mensaje y el App Inventor cuando reciba ese caracter (corresponde al 10) sabrá que ha finalizado el mensaje enviado.

_________________________________
- Bloques.

_________________________________
- Conexiones.

_________________________________
- Código.

- El SerialBT.print(respuesta); lo envía por Bluetooth.
- El Serial.println(respuesta); lo he puesto para observarlo en el Monitor Serie.

AI2_pulsadores_bt.ino

// Juan A. Villalpando.
// KIO4.COM
// Consulta el estado de los pulsadores.

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth no activado! Activa la conexion Bluetooth.
#endif

BluetoothSerial SerialBT;
 
#define pulsa16 16   // Pulsador en terminal 16.
#define pulsa17 17   // Pulsador en terminal 17.
int pulsador16;
int pulsador17;
String estado16;
String estado17;
String respuesta = "0,0";
char caracter;

void setup() {
  Serial.begin(115200);
  pinMode(pulsa16, INPUT);
  pinMode(pulsa17, INPUT);
  
  SerialBT.begin("ESP32test");
}
 
void loop() {
   if(SerialBT.available()) {
   caracter = SerialBT.read();
   if(caracter == 'k'){
       pulsador16 = digitalRead(pulsa16);
   if (pulsador16 == HIGH) {estado16 = "Pulsador16 PULSADO";} else {estado16 = "Pulsador16 NO pulsado";}
       pulsador17 = digitalRead(pulsa17);
   if (pulsador17 == HIGH) {estado17 = "Pulsador17 PULSADO";} else {estado17 = "Pulsador17 NO pulsado";}
    
     respuesta = estado16 + "," + estado17 + "\n"; // Se debe añadir \n para indicar fin de envío.
     SerialBT.print(respuesta);
	 Serial.println(respuesta);

     caracter = '-';
  }    // Fin del caracter
 }     // Fin del available
}      // Fin del loop

_________________________________
- Comentarios.

- Cuando queramos obtener los estados, enviamos la "k".

- Si el código del ESP32 recibe ese caracter, leerá el estado del pulsa16 y pulsa17 y lo enviará al App Inventor.

- Tambíen enviará "\n" que significa fin de mensaje, de esta manera cuando App Inventor reciba ese Byte (que corresponde al 10) sabrá que ha terminado de llegar el mensaje.

- El mensaje va llegando caracter a caracter.

- El caracter ASCII 10 es backspace, es decir fin de línea, es nuestro caso fin de mensaje, en el código del Linux es "\n"

- Las variables:

int pulsador16;
int pulsador17;

también las podríamos haber puesto de tipo bool.

bool pulsador16;
bool pulsador17;

- ¿Cómo se obtiene por separado cada pulsador?

- ContenidodeRespuesta: Pulsador16 PULSADO,Pulsador17 NO PULSADO

- Lo guardamos en una tabla llamada respuesta, cada parte separada por coma es un elemento (esto lo hace el bloque lista desde registro csv)

respuesta
1
Pulsador16 PULSADO
2
Pulsador17 NO PULSADO

- Ahora mostramos en las Etiquetas.Texto los elementos 1 y 2

 

_________________________________
_________________________________
_________________________________
_________________________________
- Con un Reloj.

- En vez de Pulsar el Botón para obtener el estado de los pulsadores, se obtendrá automáticamente mediante un Temporizador, Reloj.

p155wemos_pulsadores_Reloj_BT.aia

_________________________________
- Diseño.

- En el Diseño añadimos un Reloj y le ponemos IntervaloDelReloj a 500.

- Cada 500 milisegundos, el Temporizador obtendrá el estado de los pulsadores.

_________________________________
- Bloques.

_______________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información