Leer temperatura por bluetooth y mostrarlo en LCD

Hola, estoy enviando datos por bluetooth, pero quisiera mostrarlos en una LCD. Estoy enviando los datos desde un LM35 y usando la configuración de maestro en el modulo HC-06.Lo unico que consigo es hacer que se muestren en el monitor serial del modulo esclavo.

CODIGO MAESTRO

#include <LiquidCrystal.h>

//MAESTRO ARDUINO UNO
//ROLE=1 MAESTRO

#include <SoftwareSerial.h>   // Incluimos la librería  SoftwareSerial  
SoftwareSerial BT(10,11);    // Definimos los pines RX y TX del Arduino conectados al Bluetooth
 
  float temp;
  int OutLM35=0;
  LiquidCrystal lcd(7, 6, 5, 4, 3, 2);	// crea objeto, PINES conectados RS, E, D4, D5, D6, D7

void setup()
{
  BT.begin(9600);       // Inicializamos el puerto serie BT que hemos creado
  Serial.begin(9600);   // Inicializamos  el puerto serie  
  lcd.begin(16,2);  
}
 
void loop()
{
  if(BT.available())    // Si llega un dato por el puerto BT se envía al monitor serial
  {
    Serial.write(BT.read());
  }
 
  if(Serial.available())  // Si llega un dato por el monitor serial se envía al puerto BT
  {
     BT.write(Serial.read());
  }
  while (Serial.available())  
  {
    OutLM35=analogRead(A0);
    temp=((OutLM35*5000.0)/1023)/10;     
    
    BT.print("Temp: ");				// escribe Temp:
    BT.print(temp);
    BT.println(" C");				// imprime Centigrados      
    delay(1000);    

    lcd.setCursor(0,0);
    lcd.print("Temp: ");				// escribe Temp:
    lcd.print(temp);
    lcd.print(" C");				// imprime Centigrados      
    delay(1000);
  }
} 

CODIGO ESCLAVO

#include <LiquidCrystal.h>
//ESCLAVO  ARDUINO NANO
//ROLE=0 ESCLAVO

#include <SoftwareSerial.h>   // Incluimos la librería  SoftwareSerial  
SoftwareSerial BT(10,11);    // Definimos los pines RX y TX del Arduino conectados al Bluetooth
 
  float temp;
  int OutLM35=0;
  LiquidCrystal lcd(7, 6, 5, 4, 3, 2);	// crea objeto, PINES conectados RS, E, D4, D5, D6, D7
 
void setup()
{
  BT.begin(9600);       // Inicializamos el puerto serie BT que hemos creado
  Serial.begin(9600);   // Inicializamos  el puerto serie   
  lcd.begin(16,2);
}
 
void loop()
{ 
    if(BT.available())    // Si llega un dato por el puerto BT se envía al monitor serial
  {
    Serial.write(BT.read());
  }
 
  if(Serial.available())  // Si llega un dato por el monitor serial se envía al puerto BT
  {
     BT.write(Serial.read());        
  }
} 

Decide por uno

  if(Serial.available())  // Si llega un dato por el monitor serial se envía al puerto BT
  {
     BT.write(Serial.read());
  }
  while (Serial.available())  

O pones el primero o pones el 2do pero los dos no, porque el primero le roba un caracter al segundo y eso puede ser importante.
El segundo se queda con el resto de los datos.
Y en el Esclavo los recibes por BT entonces para que tener ademas una receptor de datos del puerto? Esta de más.

Tu comunicacion es de uno al otro, asi que solo deja eso.
El esclavo recibe del BT y presenta por Serial.

void loop()
{ 
   if (BT.available()) {   // Si llega un dato por el puerto BT se envía al monitor serial
       Serial.write(BT.read());
  }
} 

Con esto suficiente en el esclavo.
Recibe y presenta aunque presentar en monitor Serie debe ser ahora que estas probando.

Gracias. Esto resuelve algunas dudas que tenia. Lo probare en un instante

Asi funciona mejor. Mi duda es como puedo imprimir los datos del LM35 en el esclavo dentro de un LCD.

Basado en el código del maestro, siempre y cuando luego no envies otras cosas que no sea la temperatura, puedes hacer algo así

void loop()
{
  lcd.setCursor(0,0);
  if (BT.available()) {   // Si llega un dato por el puerto BT se envía al monitor serial
       String datos = BT.readStringUntil('\n');
       lcd.print(datos);
       Serial.println(datos);
  }
}

MUCHAS GRACIAS,
Ya funciona

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