Enviando texto via bluetooth a arduino, pero separa el texto

Hola a todos, tengo el siguiente problema. Estoy tratando de enviar un texto compuesto por numeros y simbolos de mi app via bluetooth a arduino, el problema es que cuando los recibe arduino, en el monitor separa los caracteres...
lo que quiero es recibir <11,8,5,12>

pero en el monitor me aparece:

19:05:01.447 -> <
19:05:02.477 -> 1
19:05:03.595 -> 1
19:05:04.622 -> ,
19:05:05.700 -> 8
19:05:06.775 -> ,
19:05:07.845 -> 5
19:05:08.920 -> ,
19:05:09.998 -> 1
19:05:11.049 -> 2
19:05:12.141 -> >

que hago mal???????????????????????

aca todo mi codigo arduino

#include <Wire.h>    // incluye libreria para interfaz I2C
#include <RTClib.h>   // incluye libreria para el manejo del modulo RTC
#include <LiquidCrystal_I2C.h> // Libreria para LCD 
#include <DHT.h>    // importa la Librerias DHT
#include <DHT_U.h>
#include <SoftwareSerial.h>  // libreria que permite establecer pines digitales
#include <ezButton.h> // LIBRERIA FLOTADOR

// Definimos el pin digital donde se conecta el sensor DHT TEMPERATURA HUMEDAD
#define DHTPIN 2
// Dependiendo del tipo de sensor
#define DHTTYPE DHT11

SoftwareSerial miBT(11, 12);   // pin 11 como RX, pin 12 como TX


RTC_DS3231 rtc;     // crea objeto del tipo RTC_DS3231
bool evento_inicio = true;  // variable de control para inicio de evento con valor true
bool evento_fin = true;   // variable de control para finalizacion de evento con valor true

int CINTALED = 4;     // CINTA LED (+) - pin digital 4

int LEDROJO = 3;
int LEDAMARILLO = 6;

String xxxx;

/// BLUETOOTH
char DATO = 0;      // variable para almacenar caracter recibido
char DATOFOCOLUZ = 0; //variable para ON-AUT-OFF CINTA LED

LiquidCrystal_I2C lcd(0x27, 16, 2); //PANTALLA LCD)

// defino los nuevo caracter o imagenes
        byte letra1[8] = { B11111, B10101, B10101, B10001, B10001, B10101, B10101, B11111 }; // HUMEDAD
        byte letra2[8] = { B11111, B10001, B11011, B11011, B11011, B11011, B11011, B11111 }; // TEMPERATURA
        byte letra3[8] = { B00000, B10001, B11111, B11111, B11111, B11111, B11111, B00000 }; // NIVEL LLENO
        byte letra8[8] = { B00000, B10001, B10001, B10001, B10001, B10001, B11111, B00000 }; // nivel vacio
        
        byte letra4[8] = { B01110, B11111, B11111, B11011, B11011, B01110, B01110, B00100 }; // light off
        byte letra5[8] = { B01110, B10001, B10001, B10101, B10101, B01110, B01110, B00100 }; // light on

        byte letra6[8] = { B11100, B10100, B11100, B00000, B00111, B00100, B00100, B00111 }; // GRADOS CELCIUS
        byte letra7[8] = { B10010, B00100, B01000, B10010, B00000, B01010, B01110, B01010 }; // % HUMEDAD

        byte letra9[8] = { B00100, B10101, B01010, B10001, B10001, B01010, B10101, B00100 }; // FOCOTEMP on
        byte letra10[8] = { B00100, B10101, B01110, B11111, B11111, B01110, B10101, B00100 }; // FOCOTEMP off

//FLOTADOR
 ezButton toggleSwitch(8);  // create ezButton object that attach to pin 8;

        
///DHT11

        int SENSOR = 2;     // pin DATA de DHT22 a pin digital 2
        int TEMPERATURA;
        int HUMEDAD;
        DHT dht(DHTPIN, DHTTYPE);   // creacion del objeto, cambiar segundo parametro        // por DHT11 si se utiliza en lugar del DHT22

///fin DHT22

void setup(){

  Serial.begin(9600);
  
//pruebas
  pinMode(LEDAMARILLO, OUTPUT); //pin 6 led amarillo LED
  pinMode(LEDROJO, OUTPUT); // pin 3 como salida
  
//bluetooth
  miBT.begin(38400);    // comunicacion serie entre Arduino y el modulo a 38400 bps

//FLOTADOR
  toggleSwitch.setDebounceTime(500); // set debounce time to 500 milliseconds


// INICIAR DHT
      dht.begin();      // inicializacion de sensor

// inicializar LCD: 
      lcd.begin();
      lcd.backlight();
      lcd.clear();
          lcd.createChar(1, letra1);      // asigna los nuevos caracteres por numeros
          lcd.createChar(2, letra2);
          lcd.createChar(3, letra3);
          lcd.createChar(4, letra4);
          lcd.createChar(5, letra5);
          lcd.createChar(6, letra6);
          lcd.createChar(7, letra7);
          lcd.createChar(8, letra8);
          lcd.createChar(9, letra9);
          lcd.createChar(10, letra10);
     
//LED FLOTADOR
 pinMode (LEDROJO, OUTPUT); //OPCION CON FLOTADOR

//reloj
 if (! rtc.begin()) {       // si falla la inicializacion del modulo
 Serial.println("Modulo RTC no encontrado !");  // muestra mensaje de error
 while (1);         // bucle infinito que detiene ejecucion del programa
 }
//rtc.adjust(DateTime(__DATE__, __TIME__)); // funcion que permite establecer fecha y horario
            // al momento de la compilacion. Comentar esta linea
}

void loop(){

// pruebas
 pinMode(CINTALED, OUTPUT);   // pin 4 como salida CINTA LUZ

  
//BLUETOOTH

  DATO = miBT.read();   // almacena en DATO el caracter recibido desde modulo

  
  if( DATO == '1' )       // si el caracter recibido es el numero 1
  digitalWrite(LEDAMARILLO, !digitalRead(LEDAMARILLO)); // escribe valor opuesto al leido del LED rojo


 DateTime fecha = rtc.now();        // funcion que devuelve fecha y horario en formato
              // DateTime y asigna a variable fecha

if (DATO == 'a')
  DATOFOCOLUZ = 'a';
    if (DATOFOCOLUZ == 'a'){
    digitalWrite(CINTALED, LOW);  
    Serial.println("CINTALED - APAGADO");
    }


if (DATO == 'b')
  DATOFOCOLUZ = 'b';
    if (DATOFOCOLUZ == 'b'){  
    Serial.println("CINTALED - MODO AUTOMATICO");

       if ( fecha.hour() == 11 && fecha.minute() == 0 ){ // si hora = 14 y minutos = 30
          if ( evento_inicio == true ){     // si evento_inicio es verdadero
            digitalWrite(CINTALED, HIGH);       // activa modulo de CINTALED con nivel alto
            Serial.println( "CINTALED encendido" );   // muestra texto en monitor serie
            evento_inicio = false;        // carga valor falso en variable de control
          }             // para evitar ingresar mas de una vez
        }
      
       if ( fecha.hour() == 11 && fecha.minute() == 2 ){ // si hora = 15 y minutos = 30
          if ( evento_fin == true ){        // si evento_fin es verdadero
            digitalWrite(CINTALED, LOW);        // desactiva modulo de CINTALED con nivel bajo
            Serial.println( "CINTALED apagado" );     // muestra texto en monitor serie
            evento_fin = false;       // carga valor falso en variable de control
          }             // para evitar ingresar mas de una vez
        }
    }

if (DATO == 'c')
  DATOFOCOLUZ = 'c';
    if (DATOFOCOLUZ == 'c'){
    digitalWrite(CINTALED, HIGH);  
    Serial.println("CINTALED - ENCENDIDO");
    }



 Serial.print(fecha.day());       // funcion que obtiene el dia de la fecha completa
 Serial.print("/");         // caracter barra como separador
 Serial.print(fecha.month());       // funcion que obtiene el mes de la fecha completa
 Serial.print("/");         // caracter barra como separador
 Serial.print(fecha.year());        // funcion que obtiene el año de la fecha completa
 Serial.print(" ");         // caracter espacio en blanco como separador
 Serial.print(fecha.hour());        // funcion que obtiene la hora de la fecha completa
 Serial.print(":");         // caracter dos puntos como separador
 Serial.print(fecha.minute());        // funcion que obtiene los minutos de la fecha completa
 Serial.print(":");         // caracter dos puntos como separador
 Serial.println(fecha.second());      // funcion que obtiene los segundos de la fecha completa
 

  if ( fecha.hour() == 2 && fecha.minute() == 0 ){  // si hora = 2 y minutos = 0 restablece valores de
    evento_inicio = true;       // variables de control en verdadero
    evento_fin = true;
  }


// Imprimir en la primera línea del LCD 

      lcd.setCursor(0,0);    
      lcd.clear();
      lcd.print(fecha.day());       // funcion que obtiene el dia de la fecha completa
      lcd.print("/");         // caracter barra como separador
      lcd.print(fecha.month());       // funcion que obtiene el mes de la fecha completa
      lcd.print("/");         // caracter barra como separador
      //lcd.print(fecha.year());        // funcion que obtiene el año de la fecha completa
      lcd.print(fecha.year() % 100);
      lcd.print(" ");         // caracter espacio en blanco como separador
      lcd.print(fecha.hour());        // funcion que obtiene la hora de la fecha completa
      lcd.print(":");         // caracter dos puntos como separador
      lcd.print(fecha.minute());        // funcion que obtiene los minutos de la fecha completa
      lcd.print(":");         // caracter dos puntos como separador
      lcd.print(fecha.second());      // funcion que obtiene los segundos de la fecha completa


//loop DHT 
  TEMPERATURA = dht.readTemperature();  // obtencion de valor de temperatura
  HUMEDAD = dht.readHumidity();   // obtencion de valor de humedad
    Serial.print("TEMPERATURA: "); // value to the PC monitor
    Serial.println(TEMPERATURA); // each value on a new line (only on PC monitor)
    miBT.print(TEMPERATURA); // value to the BT
    miBT.print(","); // data separator to the BT
    Serial.print("HUMEDAD: "); // value to the PC monitor
    Serial.println(HUMEDAD);
    miBT.print(HUMEDAD); // value to the BT
    miBT.print(","); // data separator

    
  lcd.setCursor(0, 1);   // Posicion TEMPERATURA
  lcd.print(TEMPERATURA);
  lcd.write(byte(6));
  lcd.print(" ");

  lcd.print(HUMEDAD);
  lcd.write(byte(7));
  lcd.print(" ");



//LOOP FLOTADOR

  toggleSwitch.loop(); // MUST call the loop() function first

  int state = toggleSwitch.getState();
  if (state == HIGH){
    Serial.println("Nivel Agua OK");
    miBT.print("Agua OK"); // value to the BT
    miBT.print(","); // data separator
  }
  else{
    Serial.println("Falta Agua");
    miBT.print("Falta Agua"); // value to the BT
    miBT.print(","); // data separator
  }
    if (state == HIGH){
      digitalWrite(LEDROJO, LOW); 
      lcd.write(byte(3));
      lcd.print(" ");    
  }
  else{
      digitalWrite(LEDROJO, HIGH);
      lcd.write(byte(8));    
      lcd.print(" ");
  }
  
//FIN LOOP FLOTADOR

    String fechaact=String(fecha.day())+'/'+String(fecha.month())+'/'+String(fecha.year());
    miBT.print(fechaact);
    miBT.print(",");

    String horaact=String(fecha.hour())+':'+String(fecha.minute());
    miBT.print(horaact);
    miBT.print(",");
    
//CINTA LED
  if( digitalRead(CINTALED) ){   //if high
    lcd.write(byte(5));
    lcd.print(" ");
  }
  else{
    lcd.write(byte(4));
    lcd.print(" ");
  }

xxxx = String(DATO);
Serial.println("--------");
Serial.println("--------");
Serial.println(xxxx);
Serial.println("--------");
Serial.println("--------");
  
delay(1000);

}

Moderador:
Por favor, lee las Normas del foro y evita los dobles posteos.


Hilos unidos.

Hola:

¿Puedes subir el código para analizarlo?

Saludos.

Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>


No se qué número de veces te lo he indicado. SUmado al hecho que vienes con doble posteo, no tienes mas advertencias. La próxima ya sabes.

si uno comete errores asi no son intencionales... y no amenaces...