Go Down

Topic: Bluetooth funciona con serial1 pero no con solo serial  (Read 590 times) previous topic - next topic

Mig2022

Tengo un modulo bluetooth  h1-05 y un arduino uno y otro mega. Si uso sofwareserial o serial1,  todo funciona bien con cualquier app de comunicaciones. El problema está si uso los pines 0,1 del serial puedo recibir con serial.print, pero lo que envió desde el móvil lo ignora. El mismo programa si funciona bien como ya he dicho con sofwarseria u otro serial del mega.          Lo uso sin el usb al ordenador alimentado con pilas

surbyte

Si usas 0 y 1 no deberias usar el monitor serie pues el trabaja por ahi. Ese es tu problema

0 y 1 usalo si quieres en aquel arduino al que no monitorees. Ejemplo coloca el HC-05 en esos pines pero luego no se como te enteras de lo que pase a no ser que lo hagas con el BT

Mig2022

gracias por contestar lo que quiero es encender leds no tengo que visualizar por monitor
y como digo anteriormente todo funciona si uso un mega con serial1,
pero con solo el serial el programa escribe con Serial.print lo veo en el móvil pero ignora los comandos que envío uso la App Serial Bluetooth

Swift

Puedes compartir tu codigo?, me imagino que si estas cambiando para que lea los caracteres por el puerto serial y no por el que creaste con la librería del sofwareserial.

Mig2022

Hola perdón por la tardanza, el código es sencillo


Code: [Select]
void setup()
{
 
 pinMode(13,OUTPUT);//Seleccionamos el pin 13 como salida
 digitalWrite(13,HIGH);
 delay(3000);
 Serial.begin(38400);//Inicializamos el valor de transmisión.
 Serial.println("HOLA");
 digitalWrite(13,LOW); //Indicamos que en el puerto 13 la señal será baja por lo que el LED estará apagado.
}

void loop()
{
 char dato="";

 if (Serial.available()>0)//Declaramos un sentencia, Mientras el puerto Serial este disponible se empieza el ciclo
 {
  Serial.println("Prueba conexion");
   char dato= Serial.read(); //Declaramos una variable de tipo carácter y Seo lee la variale enviada desde el Bluetooth.
   
   switch(dato)
   {
   case 'a': //Si en el caso de ser A la varible enviada, entonces:
     {
       digitalWrite(13,HIGH);//La señal será alta, encenderá el LED.
       Serial.println("Led encendido");//Se mostrará un mensaje.
        Serial.println(dato);
       break;//El caso se detiene.
     }
   case 'b': //Si en el caso de ser A la variable enviada, entonceS:
     {
       digitalWrite(13,LOW);//la señal será baja por lo que el LED estará apagado.
       Serial.println("Led apagado");//Se mostrará un mensaje.
       Serial.println(dato);
       break;
     }
   }
   
 }
}


solo recibo el primer "Hola".
si se cambia por Serial1 en un arduino Mega funciona perfectamente

surbyte

No entiendo como no recepciona bien.
Por todas las preubas que refieres usando MEGA con SErial1 y/o SoftwareSerial con el UNO descarto que los baudios estan bien y que no hay otros inconvenientes.

Preuba de este modo y nos cuentas que tal va

Code: [Select]
void setup()
{
 
 pinMode(13,OUTPUT);//Seleccionamos el pin 13 como salida
 digitalWrite(13,HIGH);
 delay(3000);
 Serial.begin(38400);//Inicializamos el valor de transmisión.
 Serial.println("HOLA");
 digitalWrite(13,LOW); //Indicamos que en el puerto 13 la señal será baja por lo que el LED estará apagado.
}

void loop() {
 
    char dato="";

    if (Serial.available()>0)  {  //Declaramos un sentencia, Mientras el puerto Serial este disponible se empieza el ciclo

        // Serial.println("Prueba conexion");
        char dato = Serial.read(); //Declaramos una variable de tipo carácter y Seo lee la variale enviada desde el Bluetooth.
        switch(dato) {
           case 'a': //Si en el caso de ser A la varible enviada, entonces:
                     digitalWrite(13,HIGH);//La señal será alta, encenderá el LED.
                     // Serial.println("Led encendido");//Se mostrará un mensaje.
                     // Serial.println(dato);
                     break;//El caso se detiene.
           case 'b': //Si en el caso de ser A la variable enviada, entonceS:
                     digitalWrite(13,LOW);//la señal será baja por lo que el LED estará apagado.
                     // Serial.println("Led apagado");//Se mostrará un mensaje.
                     // Serial.println(dato);
                     break;
        }   
    }
}


Luego si eso funciona descomenta dentro de los case
Code: [Select]

Serial.println("Led encendido");//Se mostrara un mensaje.
Serial.println(dato);



Mig2022

Cuando envío desde el móvil parpadea el léd de Tx en el arduino, pero no lee ningún dato.


Y como sabes que no lee ningún dato? Usas el monitor serie?

Mig2022

No uso el USB por eso es lo de encender el léd e imprimir el mensaje después de de la condición Serial.available
puedo recibir pero no emitir, he probado con varias apps pero el resultado es el mismo. Pienso que será
alguna configuración del bluetooth. Pero lo estraño es que funcione con SofwareSeria o con Serial1 en arduino
Mega.
Lo he configurado con Comandos AT en todas las posibles velocidades y paridad de datos.

Go Up