Arduino y LCD 16x2


hola todos, recién me registré en este foro que es de excelente ayuda. estoy empezando trabajar con arduino leonardo.
mi proyecto consiste en medir la temperatura, humedad y la presión atmosférica, luego añadiré velocidad del viento y radiación solar, para hacer una estación meteorológica.

para la medición de temperatura y humedad utilizo el sensor dht22 y para la presión el mpx4250.
la programación para ambos funciona perfectamente, también ya hice la prueba en la tabla de nodos.

el problema es el siguiente:

utilizo dos pulsadores para seleccionar la variable meteorológica que quiero ver, tengo uno para la presión y otro para la temperatura y la humedad.

hay un mensaje en la lcd que dice: bienvenido pulse su opción, al presionar uno de los botones inmediatamente debería mostrar las mediciones, pero no es así, tengo que tenerlo presionado como por un segundo para que las pueda mostrar, y esto se debe al tiempo que le di la lcd para que no parpadee el texto.

si le doy 200ms parpadea, pero si le subo 1000ms no parpadea pero no entra instantáneamente mostrar las mediciones,
alguna idea para solucionar este problema?

yo quiero que el texto en la lcd no parpadee y que también al presionar uno de los dos botones muestre inmediatamente la medición de la variable seleccionada.

adjunto el código!!!

de antemano, muchas gracias!!!

:)

hola.
tu problema es que loop constantemente borra y dibuja la pantalla de bienvenida. de ahí el parpadeo. lo que deberías hacer es evitar eso, y sólo repintar la pantalla cuando ésta cambie. hay muchas formas de hacer esto. una, por ejemplo, sería definir una función para cada pantalla (incluida la de inicio) y una variable en la que almacenes qué pantalla es la última que dibujaste. si la pantalla dibujar es la misma, no hacemos nada, y si es diferente pues la pintamos y ponemos en la variable el número correspondiente la pantalla dibujada. más o menos, abreviadamente:

code: [select]

int pantalladibujada=0;

loop(){
      int pantalla_a_dibujar=1;
      if (pulsado1){
            pantalla_a_dibujar=2;
      }
      else if (pulsado2){
            pantalla_a_dibujar=3;
      }

      if (pantalla_a_dibujar!=pantalladibujada){
            switch pantalla_a_dibujar{
            case 1:
                  pantallabienvenida();
                  break;
            case 2:
                  mpx450();
                  break;
            case 3:
                  temperatura_humedad();
                  break;
            }
            pantalladibujada=pantalla_a_dibujar
      }

}


espero te sirva de ayuda.
saludos.

pd. no te preocupes; no le diré nadie que has usado un goto  :smiley-zipper::smiley-mr-green: :smiley-mr-green: :smiley-mr-green:
en serio, intenta huir de la utilización del goto, pues no aporta nada (siempre es sustituible) y enrevesa el código.


Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Arduino y LCD 16x2


arduino

Comments

Popular posts from this blog

opencv3, tbb and rasp pi 2 - Raspberry Pi Forums

small ethernet problem - Raspberry Pi Forums

Multithumb configuration params not working? - Joomla! Forum - community, help and support