Problemas con el case

Buenos Dias:

Disculpen, la pregunta, pero como puedo solucionar este problema de el case...
solo me lee el 0: y 1:, el resto lo ignora, ya cambie las cosas en los otros case y si funciona los comandos.. o sea
si pongo la opcion de luminosidad en el 0: anda y lo que esta en el 0: pongo en el 2: y no aparece..

#include <DHT.h>
#define DHTPIN 2 // what digital pin we're connected to
#define DHTTYPE DHT11  //DHT 11
DHT dht (DHTPIN, DHTTYPE); //Initialize DHT sensor.
// LCD display
#include <LiquidCrystal.h>;
LiquidCrystal lcd(3, 4, 5, 6, 7, 8); //Colocamos los pines del LCD 
const int BOTON = 9;
int valor = 0;
float l;
void setup() {
 pinMode(BOTON,INPUT); // y BOTON como señal de entrada
 Serial.begin(9600);
 dht.begin();
 lcd.begin(16, 2);
 digitalWrite(BOTON, LOW);
}
void loop() {
 if (digitalRead(BOTON) == 1){
   valor=valor+1;
   Serial.println(valor);
   if (valor > 3){
     valor=0;
   }
   delay(300);
 }  
 switch(valor){
    case 0:
      Serial.println("entro en la PRESENTACION");
      lcd.setCursor(0, 0);
      lcd.print("U.N.P. -- F.C.A.");
      lcd.setCursor(0, 1);
      lcd.print(" C. Ambientales ");
      break; 
   case 1:
     lcd.clear();
     Serial.println("entro en TREMP. y HUMEDAD");
     float t = dht.readTemperature(); // Read temperature in *C (default)
     float h = dht.readHumidity(); // Read humidity %
     // LCD display
     lcd.setCursor(0,0);
     lcd.print("Temperatura:");
     lcd.setCursor(12,0);
     lcd.print(t);
     lcd.setCursor(0,1);
     lcd.print("Humedad:");
     lcd.setCursor(8,1);
     lcd.print(h);
     lcd.setCursor(12,1);
     lcd.print("%  "); 
     delay(300);
     break; 
   case 2:
     Serial.println("entro en LUMINOSIDAD");
     l = analogRead(A3);
     l = (l * 100) / 1023;
     lcd.clear();
     lcd.setCursor(0, 0);
     lcd.print("Luminosidad");
     lcd.setCursor(0, 1);
     lcd.print(l);
     lcd.print(" %");
     delay(300);
     break;      
 }
}

por favor si me pueden orientar, soy Renovato

Moderador:
Primero debes leer y editar tu post usando las normas del foro y la etiqueta para códigos que es ésta </>. La tienes en la barra de íconos.
Lee las normas, edita y luego conversamos sobre tu problema.

He modificado tu código para que con cada acción de tu boton se mueva solo de a 1 el incremento de valor, o sea presionas y solo suma 1.

#include <DHT.h>
#define DHTPIN 2 // what digital pin we're connected to
#define DHTTYPE DHT11  //DHT 11
DHT dht (DHTPIN, DHTTYPE); //Initialize DHT sensor.
// LCD display
#include <LiquidCrystal.h>;
LiquidCrystal lcd(3, 4, 5, 6, 7, 8); //Colocamos los pines del LCD
const int BOTON = 9;
bool estado, estadoAnt = false;

int valor = 0;
float l;

void setup() {
  pinMode(BOTON,INPUT); // y BOTON como señal de entrada
  Serial.begin(9600);
  dht.begin();
  lcd.begin(16, 2);
  digitalWrite(BOTON, LOW);
}
void loop() {

  estado = digitalRead(BOTON);
  if (estado && !estadoAnt){
      valor++;
      Serial.println(valor);
      if (valor > 3){
          valor = 0;
      }
  } 
  estadoAnt = estado;

  switch(valor){
     case 0:
             Serial.println("entro en la PRESENTACION");
             lcd.setCursor(0, 0);
             lcd.print("U.N.P. -- F.C.A.");
             lcd.setCursor(0, 1);
             lcd.print(" C. Ambientales ");
             break;
    case 1:
            lcd.clear();
            Serial.println("entro en TREMP. y HUMEDAD");
            float t = dht.readTemperature(); // Read temperature in *C (default)
            float h = dht.readHumidity(); // Read humidity %
            // LCD display
            lcd.setCursor(0,0);
            lcd.print("Temperatura:");
            lcd.setCursor(12,0);
            lcd.print(t);
            lcd.setCursor(0,1);
            lcd.print("Humedad:");
            lcd.setCursor(8,1);
            lcd.print(h);
            lcd.setCursor(12,1);
            lcd.print("%  ");
            delay(300);
            break;
    case 2:
            Serial.println("entro en LUMINOSIDAD");
            l = analogRead(A3);
            l = (l * 100) / 1023;
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print("Luminosidad");
            lcd.setCursor(0, 1);
            lcd.print(l);
            lcd.print(" %");
            delay(300);
            break;     
  }
}

Hola surbyte

creo que el problema es otro hice un video para que veas, que realmente, cuenta, como veras en la consola del Serial, y cuando lleva al 2 o al 3 no hace nada...

video del Problema con el case

Con qué código, el tuyo o el que yo te sugerí?

con ambos tiene el mismo resultado...

Bueno, en tu video yo no veo nada. Asi que poco puedo indicarte.
La imagen esta de costado y poco definida, la mejor resolución posible es 360p imposible entender algo asi.