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.