Code de base pour l'utilisation de la shield Arduino LCD de DFRobots (LCD + boutons)

par skywodd | | Langue : C++ | Licence : GPLv3

Description :

Code de base pour l'utilisation de la shield Arduino LCD de DFRobots (LCD + boutons).

Code source :

Voir le code source brut | Télécharger dfrobots_keypadlcd.ino | Télécharger dfrobots_keypadlcd.ino.zip

/**
 * Code de base pour l'utilisation de la shield Arduino LCD de DFRobots (LCD + boutons).
 */

/* Dépendances */
#include <LiquidCrystal.h>


/** Objet LiquidCrystal pour communication avec l'écran LCD */
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);


/** Énumération des boutons utilisables */
enum {
  BUTTON_NONE,  /*!< Pas de bouton appuyé */
  BUTTON_UP,    /*!< Bouton UP (haut) */
  BUTTON_DOWN,  /*!< Bouton DOWN (bas) */
  BUTTON_LEFT,  /*!< Bouton LEFT (gauche) */
  BUTTON_RIGHT, /*!< Bouton RIGHT (droite) */
  BUTTON_SELECT /*!< Bouton SELECT */
};


/** Fonction setup() */
void setup() {
  lcd.begin(16, 2);
  lcd.print("Bouton:");
}

/** Fonction loop() */
void loop() {

  /* Affiche le bouton appuyé */
  lcd.setCursor(0, 1);
  switch (getPressedButton()) {
  case BUTTON_NONE:
    lcd.print(F("      "));
    break;

  case BUTTON_UP:
    lcd.print(F("UP    "));
    break;

  case BUTTON_DOWN:
    lcd.print(F("DOWN  "));
    break;

  case BUTTON_LEFT:
    lcd.print(F("LEFT  "));
    break;

  case BUTTON_RIGHT:
    lcd.print(F("RIGHT "));
    break;

  case BUTTON_SELECT:
    lcd.print(F("SELECT"));
    break;
  }

  /* Délai pour l'affichage */
  delay(100);
}


/** Retourne le bouton appuyé (si il y en a un) */
byte getPressedButton() {

  /* Lit l'état des boutons */
  int value = analogRead(A0);

  /* Calcul l'état des boutons */
  if (value < 50)
    return BUTTON_RIGHT;
  else if (value < 250)
    return BUTTON_UP;
  else if (value < 450)
    return BUTTON_DOWN;
  else if (value < 650)
    return BUTTON_LEFT;
  else if (value < 850)
    return BUTTON_SELECT;
  else
    return BUTTON_NONE;
}