Modulo I2C con modulo bluetooth

Hola quiero hacer que cuando indico un numero desde una app por bluetooth se encienda o apague un pin y que en pantalla muestre un texto según numero seleccionado. Cuando lo hago funciona todos pero cada vez que selecciono un numero en pantalla se muestran todos los mensajes uno a uno y no solo el de la acción ingresada.

#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

SoftwareSerial miBT(10, 11); 	// pin 10 como RX, pin 11 como TX
LiquidCrystal_I2C lcd(0x27,20,4);

char DATO = 0;			// variable para almacenar caracter recibido
int DIGITAL = 2;
int COCINA = 3;
int COMEDOR = 4;
int USB = 5;

void setup(){
  miBT.begin(38400);
  pinMode(DIGITAL, OUTPUT);
  pinMode(COCINA, OUTPUT);
  pinMode(COMEDOR, OUTPUT);
  pinMode(USB, OUTPUT);
  lcd.init();                      // initialize the lcd 
  lcd.init();
  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");
}

void loop(){
if (miBT.available()){
  DATO = miBT.read();
{
  if( DATO == '1' )
  digitalWrite(DIGITAL, HIGH);
lcd.clear();
         lcd.backlight();
         lcd.setCursor(5,0);
         lcd.print("DIGITAL");
         lcd.setCursor(4,1);
         lcd.print("ENCENDIDO");
         delay(2000);
         lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");

  if( DATO == '2' )
  digitalWrite(DIGITAL, LOW);
lcd.clear();
         lcd.backlight();
         lcd.setCursor(5,0);
         lcd.print("DIGITAL");
         lcd.setCursor(4,1);
         lcd.print("APAGADO");
         delay(2000);
         lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");

  if( DATO == '3' )
  digitalWrite(COCINA, HIGH);
lcd.clear();
         lcd.backlight();
         lcd.setCursor(5,0);
         lcd.print("COCINA");
         lcd.setCursor(4,1);
         lcd.print("ENCENDIDO");
         delay(2000);
         lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");

  if( DATO == '4' )
  digitalWrite(COCINA, LOW);
lcd.clear();
         lcd.backlight();
         lcd.setCursor(5,0);
         lcd.print("COCINA");
         lcd.setCursor(4,1);
         lcd.print("APAGADO");
         delay(2000);
         lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");

  if( DATO == '5' )
  digitalWrite(COMEDOR, HIGH);
lcd.clear();
         lcd.backlight();
         lcd.setCursor(5,0);
         lcd.print("COMEDOR");
         lcd.setCursor(4,1);
         lcd.print("ENCENDIDO");
         delay(2000);
         lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");

  if( DATO == '6' )
  digitalWrite(COMEDOR, LOW);
lcd.clear();
         lcd.backlight();
         lcd.setCursor(5,0);
         lcd.print("COMEDOR");
         lcd.setCursor(4,1);
         lcd.print("APAGADO");
         delay(2000);
         lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");

  if( DATO == '7' )
  digitalWrite(USB, HIGH);
lcd.clear();
         lcd.backlight();
         lcd.setCursor(5,0);
         lcd.print("USB");
         lcd.setCursor(4,1);
         lcd.print("ENCENDIDO");
         delay(2000);
         lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");

  if( DATO == '8' )
  digitalWrite(USB, LOW);
lcd.clear();
         lcd.backlight();
         lcd.setCursor(5,0);
         lcd.print("USB");
         lcd.setCursor(4,1);
         lcd.print("APAGADO");
         delay(2000);
         lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("TABLERO");
  lcd.setCursor(5,1);
  lcd.print("INTELIGENTE");

}
}
}

Primero que nada, edita tu post para que el código cumpla con las Normas del Foro, punto 7.
Es para tu beneficio.

Tu problema es que te faltan llaves en los if()
Esto (es solo un ejemplo)

if(x == 1)
y = 0;
p = 3;

Es lo mismo que

if(x == 1) y = 0;
p = 3;

Si se cumple que x es igual a 1 entonces y valga 0.
A continuación, sin importar el valor de x, asigna el valor 3 a p.

Claramente no es lo que buscas, tu quieres que tanto y como p cambien su valor cuando x vale 1.
Para eso debes hacer

if(x == 1) {
  y = 0;
  p = 3;
}

La diferencia son las llaves que encierran las instrucciones que se ejecutan cuando se cumple la condición.

Saludos

Hola gracias por tu respuesta, como lo tengo que editar es mi primer post, que es lo que esta mal en el post y que tendría que poner. Muchas gracias

Entra en la edición del post (icono lápiz), selecciona yodo el texto del código y pulsa el icono </> en la barra del editor.

Saludos

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