Duda con codigo de modulo BT

Buenas tardes.
En el siguiente codigo, hay una seccion que escucha el puerto del modulo BT y de acuerdo a un caracter que reciba, ejecuta alguna funcion:

#include "DHT.h"

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

const int DHTPin = 5;     // pin D5 del Arduino conectado a DHT

DHT dht(DHTPin, DHTTYPE);
// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to pin D5
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
const int Tmax=6;
const int Tmin=4;
#include <SoftwareSerial.h>   // Incluimos la librería  SoftwareSerial para manejar el HC-05 modulo BT
SoftwareSerial BT(10,11);    // Definimos los pines RX y TX del Arduino conectados al Bluetooth

const int RelayOut = 2;  // define el pin D1 como salida que controla el modulo relay HW482

void listaComandos() {
  imprimeBySln("-------------------------");
  imprimeBySln("Lista de comandos");
  imprimeBySln("h => lista de comandos ");  
  imprimeBySln("t => temperatura");
  imprimeBySln("r => estado relay");
  imprimeBySln("-------------------------");
}

void imprimeBySln (String texto) {
  Serial.println(texto);
  BT.println(texto);
  }

void imprimeByS (String texto) {
  Serial.print(texto);
  BT.print(texto);
  }

void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");

  dht.begin();
  Serial.println("Levantando el modulo HC-06");
  digitalWrite (8, HIGH);    //Enciende el modulo
  Serial.println("Esperando comandos AT:");
  BT.begin(38400); //inicia el modulo BT
  digitalWrite (RelayOut, LOW); //inicializa la salida en 0, o sea el motor apagado
} 

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  if (isnan(h) || isnan(t)) {
    imprimeBySln("Failed to read from DHT sensor!");
    return;
  } else if (t>=Tmax) {
    digitalWrite (RelayOut, HIGH);
    imprimeBySln("temperatura mayor a Tmax, se prende el motor");    
  } else if (t<=Tmin) {
    digitalWrite (RelayOut, LOW);
    imprimeBySln("temperatura menor a Tmin, se apaga el motor");    
  }
  imprimeByS("Humidity: ");
  imprimeByS(String(h));
  imprimeByS(" %\t");
  imprimeByS("Temperature: ");
  imprimeByS(String(t));
  imprimeBySln(" *C ");  
  BT.listen();
      if (BT.available()) {                          //lee BT y envia a Arduino             
          char myChar = BT.read();        
          imprimeBySln("-------------------------");
          imprimeByS ("valor de myChar a testear> ");       
          imprimeBySln (String(myChar));
          imprimeBySln("-------------------------");
          
          if (myChar == 'h') {
            listaComandos();
          }
          
          else if (myChar == 't'){
            imprimeBySln("-------------------------");
            imprimeByS("respuesta a comando t> ");
            imprimeByS("temperatura: ");
            imprimeBySln(String(t));
            imprimeByS("humedad: ");
            imprimeBySln(String(h));
            imprimeBySln("-------------------------");          
          }
          else if (myChar == 'r'){
            imprimeBySln("-------------------------");
            imprimeByS("respuesta a comando r> ");
            imprimeByS("estado relay: ");
            imprimeBySln(String(digitalRead(RelayOut)));
            imprimeByS("humedad: ");
            imprimeBySln(String(h));
            imprimeBySln("-------------------------");          
          }
      }
}

La pregunta es: ¿sería posible leer un grupo de caracteres? (por ej: si envío desde el terminal BT del celular que conecto al modulo BT de Arduino "Tn5", entonces ejecuto una funcion que cambie el valor de la temperatura minima a 5, y si con "tx7" entonces ejecuto una funcion que cambie el valor de la temperatura maxima a 7).
Porque hasta ahora solo logro leer de a un caracter.

Claro que se puede e internet está plagado de ejemplos. De hecho, cualquier ejemplo que lea más de un caracter por serial te sirve de guía (quiero decir que no tiene que ser específicamente un ejemplo de bluetooth).

si pudieras mostrarme un ejemplo, te lo agradeceria.
Saludos!

EDITO:

Estuve viendo la función Serial.readStringUntil('\n')
Supongo que se usará con el Bluetooth igual, reemplazando Serial por la instancia BT que defino en el código. Es así?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.