Actualizar Datos Dentro de Switch Case

Estoy haciendo un proyecto para la Universidad en donde voy a utilizar un sensor DHT11 para medir la temperatura y humedad del ambiente y que se muestren en un LCD I2C, para hacerlo mas interactivo estoy utilizando un sensor IR con un el control remoto para crear una especie de "menú" en el LCD, para que cuando apriete el botón 1 en el control se muestre la temperatura en el LCD, cuando apriete el botón 2 se muestre la humedad en el LCD y asi con otros parametros con otros sensores que iré añadiendo.
Mi problema es que los datos que entrega el sensor se actualizan en el LCD solo cuando aprieto nuevamente el botón en el control, las lecturas estan bien y se actualizan constantemente pero no se actualizan en el LCD, quisiera saber si hay una manera de que los datos del sensor DHT11 se actualicen constantemente dentro del CASE, o quizás hay otra manera de crear este "menú". Soy bastante nuevo en Arduino asi que si el código está muy revuelto es mi culpa.
Adjunto el código y un esquema del cableado.

#include <IRremote.h>
#define IR_RECEIVE_PIN 8
#define IR_BUTTON_2 17
#define IR_BUTTON_1 16
#define IR_BUTTON_0 12

#include <DHT.h>
#define DHTPIN 7
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);

void setup() {
  Serial.begin(9600);
  IrReceiver.begin(IR_RECEIVE_PIN);
  dht.begin();
  lcd.init();
  lcd.backlight();
  lcd.clear();
  lcd.setCursor(3,0);
  lcd.print("Seleccione");
  lcd.setCursor(3,1);
  lcd.print("una opcion");
}

void loop() {
   float t = dht.readTemperature();
   float h = dht.readHumidity();

  if (IrReceiver.decode()) {
    IrReceiver.resume();
    int command = IrReceiver.decodedIRData.command;
    switch (command) {
      case IR_BUTTON_1: {
        lcd.clear();
        lcd.setCursor(2,0);
        lcd.print("Temperatura:");
        lcd.setCursor(4,1);
        lcd.print(t);
        lcd.print("*C");
        break;
      }
      case IR_BUTTON_2: {
        lcd.clear();
        lcd.setCursor(4,0);
        lcd.print("Humedad:");
        lcd.setCursor(5,1);
        lcd.print(h);
        lcd.print("%");
        break;
      }
      case IR_BUTTON_0: {
        lcd.clear();
        lcd.setCursor(3,0);
        lcd.print("Seleccione");
        lcd.setCursor(3,1);
        lcd.print("una opcion");
        break;
      }
      default: {
      }
    }
  }
}

Yo sacaría el switch() de dentro del if().

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