buenas les comento el problema que me ha surgido hoy, estoy "programando un sistema domotico integral"
lo que quiere decir que es capoaz de encender luces y controlar los aparatos por IR y todo con una central Tablet chuwi 8 con windows 10 32bit.
lo que me sucede es que luego del tercer comando aceptado por la central y enviado al arduino via bluetooth, ya no puede volver a completar la misma operacion, osea no logra abrir en mi caso el COM 6.
que es el puerto que utiliza mi central para enviar los datos al arduino, el programa no se cuelga ni nada, de hecho el HC-06 se mantiene normal parpadeando a la espera de cliente e instruccion, pero ni con el movil logro conectar depues de que sucede eso,
desconecto el HC-06 de la alimentacion lo conecto nuevamente y todo anda de maravillas por 3 comandos y luego lo mismo.
una pequeña ayuda me seria genial.
adjunto el caotico codigo que he desarrollado.
#include <SoftwareSerial.h>
#include <avr/wdt.h>
#include <IRremote.h>
#include "DHT.h"
#define DHTPIN 8
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
IRsend irsend;
SoftwareSerial blue(0, 1); //Crea conexion al bluetooth - PIN 0 a TX y PIN 1 a RX
char NOMBRE[21] = "DOMO1"; // Nombre de 20 caracteres maximo
char BPS = '4'; // 1=1200 , 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200
char PASS[5] = "1234"; // PIN O CLAVE de 4 caracteres numericos
int estado = 0;
int retardo = 100;
int temp = 0;
int hum = 0;
void setup()
{
wdt_disable(); // No te olvides
wdt_enable(WDTO_4S);
pinMode(A0, INPUT);
pinMode(13, OUTPUT);
pinMode(13, HIGH);
pinMode(12, OUTPUT);
pinMode(12, HIGH);
pinMode(11, OUTPUT);
pinMode(11, HIGH);
pinMode(10, OUTPUT);
pinMode(10, HIGH);
pinMode(9, OUTPUT);
pinMode(9, HIGH);
pinMode(8, OUTPUT);
pinMode(8, HIGH);
pinMode(7, OUTPUT);
pinMode(7, HIGH);
pinMode(6, OUTPUT);
pinMode(6, HIGH);
pinMode(5, OUTPUT);
pinMode(5, HIGH);
pinMode(4, OUTPUT);
pinMode(4, HIGH);
pinMode(3, OUTPUT);
pinMode(3, HIGH);
blue.begin(9600); // inicialmente la comunicacion serial a 9600 Baudios (velocidad de fabrica)
blue.print("AT"); // Inicializa comando AT
blue.print("AT+NAME"); // Configura el nuevo nombre
blue.print(NOMBRE);
// espera 1 segundo
blue.print("AT+BAUD"); // Configura la nueva velocidad
blue.print(BPS);
blue.print("AT+PIN"); // Configura el nuevo PIN
blue.print(PASS);
dht.begin();
}
void loop()
{
if (blue.available() > 0) { // Si el puerto serie esta habilitadp
estado = blue.read(); // Lee lo que llega por el puerto Serie
}
if (estado == 'a') { // on/off de los pin 13 al pin 6
digitalWrite(13, HIGH);
delay(1000);
estado = 'b';
}
if (estado == 'b' ) {
digitalWrite(13, LOW);
}
if (estado == 'c') {
digitalWrite(12, LOW);
delay(1000);
estado = 'd';
}
if (estado == 'd' ) {
digitalWrite(12, HIGH);
}
if (estado == 'e') {
digitalWrite(11, LOW);
}
if (estado == 'f' ) {
digitalWrite(11, HIGH);
}
if (estado == 'g' ) {
digitalWrite(10, LOW);
}
if (estado == 'h' ) {
digitalWrite(10, HIGH);
}
if (estado == 'i' ) {
digitalWrite(9, LOW);
}
if (estado == 'j' ) {
digitalWrite(9, HIGH);
}
if (estado == 'k' ) {
digitalWrite(8, LOW);
}
if (estado == 'l' ) {
digitalWrite(8, HIGH);
}
if (estado == 'm' ) {
digitalWrite(7, LOW);
}
if (estado == 'n' ) {
digitalWrite(7, HIGH);
}
if (estado == 'o' ) {
digitalWrite(6, LOW);
}
if (estado == 'p' ) {
digitalWrite(6, HIGH);
}
if (estado == 'r' ) {
digitalWrite(5, LOW);
}
if (estado == 's' ) {
digitalWrite(5, HIGH);
}
if (estado == 't' ) {
digitalWrite(4, LOW);
}
if (estado == 'u' ) {
digitalWrite(4, HIGH);
}
if(estado == 'v')
{
irsend.sendNEC(0x20DF10EF, 32); //envia una señal encender tv
Serial.println("Enviado"); // imprime por serial que fue enviado
delay(1000); //espera 1000 milisegundos
irsend.sendNEC(0x10110EF, 32);
estado = 0;
}
if(estado == 'w')
{
irsend.sendNEC(0x101906F, 32); //envia una señal canal mas
estado = 0;
}
if(estado == 'x')
{
irsend.sendNEC(0x10150AF, 32); //envia una señal canal menos
estado = 0;
}
if(estado == 'y')
{
irsend.sendNEC(0x101926D, 32); //envia una señal volumen mas
delay(100);
irsend.sendNEC(0x101926D, 32);
delay(100);
irsend.sendNEC(0x101926D, 32);
estado = 0;
}
if(estado == 'z')
{
irsend.sendNEC(0x10112ED, 32); //envia una señal volumen menos
delay(100);
irsend.sendNEC(0x10112ED, 32);
delay(100);
irsend.sendNEC(0x10112ED, 32);
estado = 0;
}
if (estado == 'q') { // envia el valor leido del sensor de temperatura
temp = dht.readTemperature();
hum = dht.readHumidity();
blue.print("Temperatura:");
blue.print(temp);
blue.println(" C");
blue.print("Humedad:");
blue.print(hum);
blue.println(" %");
delay (retardo);
estado = 0;
}
delay(retardo);
wdt_reset();
}