/LCDButtons/examples/ShowButtons/ShowButtons.ino

https://bitbucket.org/jraedler/lcdbuttons · C++ · 65 lines · 51 code · 9 blank · 5 comment · 2 complexity · 4c23645e4ef8c43042502e28656f6596 MD5 · raw file

  1. #include <LiquidCrystal.h>
  2. #include <LCDButtons.h>
  3. /* test the functionality of LCDButtons:
  4. * - button presses are shown in line 1 for one secons
  5. * - SELECT toggles the waiting for releasing the button
  6. * - UP and DOWN change the delay time between repeated readings (5-200 ms)
  7. */
  8. LCDButtons lcd;
  9. boolean wait;
  10. byte repeatDelay;
  11. void changeParameters() {
  12. char s[17];
  13. lcd.setButtonParameter(wait, repeatDelay);
  14. lcd.setCursor(0,1);
  15. snprintf(s, 16, "%s - %03d", (wait) ? " WAIT": "NO WAIT", repeatDelay);
  16. lcd.print(s);
  17. }
  18. void setup() {
  19. lcd.begin(16, 2);
  20. lcd.clear();
  21. lcd.setCursor(0, 0);
  22. lcd.print("PRESS ANY KEY");
  23. wait = 1;
  24. repeatDelay = 5;
  25. changeParameters();
  26. }
  27. void loop() {
  28. static byte button;
  29. button = lcd.button();
  30. if (button > 0) {
  31. lcd.setCursor(0, 0);
  32. switch (button) {
  33. case BUTTON_SELECT:
  34. lcd.print("SELECT ");
  35. wait = ! wait;
  36. changeParameters();
  37. break;
  38. case BUTTON_LEFT:
  39. lcd.print("LEFT ");
  40. break;
  41. case BUTTON_RIGHT:
  42. lcd.print("RIGHT ");
  43. break;
  44. case BUTTON_UP:
  45. lcd.print("UP ");
  46. repeatDelay = min(repeatDelay+5, 200);
  47. changeParameters();
  48. break;
  49. case BUTTON_DOWN:
  50. lcd.print("DOWN ");
  51. repeatDelay = max(repeatDelay-5, 5);
  52. changeParameters();
  53. break;
  54. }
  55. }
  56. }