LCD keypad Shield

SHKEYPAD

LCD keypad Shield

Shield para Compluino / Arduino que nos proporciona una pantalla LCD de 2x16 caracteres y un pequeño teclado de 5 pulsadores.

Estado: NUEVOEN STOCK  (1) Entrega 24/48 h
14,52
21.00% IVA incluido
unidades

Añadir a cesta

Programa de ejemplo para Arduino:

// Programa de prueba para el Arduino LCD Key Pad

#include <LiquidCrystal.h>

// Pines donde se encuentra conectado el LCD
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

#define ENTRADA_BOTON_ADC 0  // Canal analógico donde esán conectados los botones

#define BOTON_RIGHT  0
#define BOTON_UP     1
#define BOTON_DOWN   2
#define BOTON_LEFT   3
#define BOTON_SELECT 4
#define BOTON_NO_PULSADO   5

int boton     = 0;
int boton_adc  = 0;
int lectura_adc = 0;

void setup()
{
  lcd.begin(16, 2);              // Inicializamos la librería
  lcd.clear();
  lcd.setCursor(0, 0);            // Mensaje en la primera línea
  lcd.print("Pulsa un boton  ");
}

void loop()
{
  boton_adc = analogRead(ENTRADA_BOTON_ADC);  // Leemos el boton

  boton = convierte_boton_adc(boton_adc);  // convertimos el valor leido al boton pulsado

  lcd.setCursor(0, 1);         // Nos posicionamos al comienzo de la segunda línea del LCD

  switch (boton)               // mostramos el boton pulsado
  {
    case BOTON_RIGHT:
      {
        lcd.print("RIGHT     ");
        break;
      }
    case BOTON_LEFT:
      {
        lcd.print("LEFT      ");
        break;
      }
    case BOTON_UP:
      {
        lcd.print("UP        ");
        break;
      }
    case BOTON_DOWN:
      {
        lcd.print("DOWN      ");
        break;
      }
    case BOTON_SELECT:
      {
        lcd.print("SELECT    ");
        break;
      }
    case BOTON_NO_PULSADO:
      {
        lcd.print("No pulsado");
        break;
      }
  }

  // Muestra el valor analógico de la entrada de los botones
  // puedes usar esta medida para ajustar mejor los niveles de comparación
  // para cada boton
  lcd.setCursor(11, 1);
  lcd.print("    ");
  lcd.setCursor(11, 1);
  lcd.print(boton_adc);

  // No es necesario actualizar la información más rápido que lo que podemos percibir con la vista
  delay(100);
}

// Convertimos la lectura del boton
int convierte_boton_adc(int lectura_adc)
{
  if (lectura_adc > 1000) return BOTON_NO_PULSADO; // Comprobamos primero la opción más probable
  // Los siguientes valores representan un incremento de unas 50 cuentas sobre el valor analógico
  // medido para cada boton. Puedes ajustar estos valores para un mejor funcionamiento del teclado
  if (lectura_adc < 50)   return BOTON_RIGHT;
  if (lectura_adc < 150)  return BOTON_UP;
  if (lectura_adc < 300)  return BOTON_DOWN;
  if (lectura_adc < 450)  return BOTON_LEFT;
  if (lectura_adc < 650)  return BOTON_SELECT;

  return BOTON_NO_PULSADO;  // Por si no detectamos el boton pulsado...
}