Menú en un LCD con Arduino

Para ir cogiendo practica con la pantalla lo mejor es trastear con ella. En esta ocasión con un menú que permite desde una botonera de 4 direcciones controlar las diferentes partes del menú, pudiendo encender y apagar los leds como cambiarles la intensidad de brillo.

Si de una cosa me he dado cuenta es que todo el código empleado, unas 350 lineas, y que tampoco es mucho, ocupa mucha memoria en el Arduino, esas lineas ya ocupaban 8KiB (de 14KiB) de la memoria flash, después de refactorizarlo un poco lo baje a 7KiB, aunque aun se puede afinar algo más. Seguramente tenga que cambiar el Arduino por uno con un Atmel 328 en vez del 168 para disponer de 30KiB de memoria.

14 comentarios en “Menú en un LCD con Arduino

  1. Buen trabajo amigo. Sólo una consulta, el teclado no me queda claro, me puedes indicar como hacerlo, debo estar confundido y no lo veo.
    Gracias amigo.

    Roberto.

  2. Buenas noches una pregunta como le definiste los botones? o en que parte del programa lo dice esque estoy un poco confundido porque estoy elaborando un proyecto similar.

  3. hola me sale este error:
    This report would have more information with
    “Show verbose output during compilation”
    enabled in File > Preferences.
    Arduino: 1.0.6 (Windows 7), Board: “Arduino Mega 2560 or Mega ADK”
    sketch_dec29a.ino: In function ‘void LCDmenu()':
    sketch_dec29a:95: error: call of overloaded ‘write(int)’ is ambiguous
    C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_nuevo/LCD.h:479: note: candidates are: virtual size_t LCD::write(uint8_t)
    C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Print.h:49: note: size_t Print::write(const char*)
    sketch_dec29a.ino: In function ‘void LCDmenu0()':
    sketch_dec29a:154: error: call of overloaded ‘write(int)’ is ambiguous
    C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_nuevo/LCD.h:479: note: candidates are: virtual size_t LCD::write(uint8_t)
    C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Print.h:49: note: size_t Print::write(const char*)
    sketch_dec29a.ino: In function ‘void LCDmenu1()':
    sketch_dec29a:247: error: call of overloaded ‘write(int)’ is ambiguous
    C:\Program Files (x86)\Arduino\libraries\LiquidCrystal_nuevo/LCD.h:479: note: candidates are: virtual size_t LCD::write(uint8_t)
    C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Print.h:49: note: size_t Print::write(const char*)

    1. Hola,

      Han cambiado el método write, mira en la documentación o en la propia librería que tipo de parámetros necesita ahora y modificalos. Con eso debería de solucionarse. O comentando las 4 o 5 lineas que usan ese método, entonces te compilara.

      Edit:
      Ya he arreglado el código, simplemente hay que indicar que el número que pasamos como parámetro es de tipo byte forzándolo con byte()

Escriba aquí su comentario