Shield de teclado para Arduino UNO

FunduinoÚltima actualización el

Display und sechs Taster ohne eine einzige Kabelverbindung

Ein LCD-Display an den Arduino zu verkabeln kostet schnell ein Dutzend Steckkabel. Das Keypad-Shield nimmt dir diese Arbeit ab: Du steckst es auf den Mikrocontroller auf, und Display sowie sechs Taster sind sofort angeschlossen.

In dieser Anleitung erfährst du, welche Pins das Shield belegt, welche dir noch bleiben und wie du die Tasten im Sketch ausliest – denn die hängen alle an einem einzigen analogen Pin.

Shield de teclado con pantalla LCD azul y seis botones
Shield de teclado numérico con pantalla 1602 para Arduino UNO

Eso necesitas

Shield de teclado con pantalla 1602 para Arduino UNO Shield de teclado con pantalla 1602 para Arduino UNO 4,55 € *N.º de art. F23107306Al producto — Shield de teclado con pantalla 1602 para Arduino UNO
Microcontrolador Funduino UNO R3 - ATmega328P, 16 MHz, para Arduino Microcontrolador Funduino UNO R3 - ATmega328P, 16 MHz, para Arduino 13,90 € *N.º de art. F23107480Al producto — Microcontrolador Funduino UNO R3 - ATmega328P, 16 MHz, para Arduino

Todas las 2 piezas en total 18,45 € *Listo para enviar de inmediato · Plazo de entrega: 1-3 días laborables

* Todos los precios incluyen el IVA legal, más gastos de envío.

Material

Para este proyecto necesitas:

  • 1× Arduino UNO o MEGA con el cable USB correspondiente
  • 1× shield de teclado con pantalla 1602

Lo que puede hacer el escudo con teclado numérico

Un shield con teclado te ahorra el laborioso cableado de una pantalla LCD y además incorpora seis botones. Solo tienes que conectarlo al microcontrolador, y la pantalla y los botones quedarán conectados.

Lo especial es que todos los botones están conectados a un único pin analógico, A0, mediante resistencias de distintos valores. El sketch lee allí un valor de tensión y deduce qué botón se ha pulsado. Como A0 ya está ocupado, el shield tampoco tiene un zócalo para ese pin.

Shield de teclado con pantalla LCD azul y seis botones
Shield de teclado numérico con pantalla 1602 para Arduino UNO

Conecta el shield

Coloca el shield sobre el microcontrolador de manera que la hilera de pines de alimentación encaje exactamente en la hilera de conectores correspondiente de la placa. Una buena referencia es el pin marcado como VIN: debe coincidir con el pin VIN del Arduino.

Presiona el shield hacia abajo de manera uniforme hasta que todos los pines encajen por completo. El shield es compatible tanto con Arduino UNO como con la placa MEGA.

Qué pines quedan libres

La pantalla ocupa los pines digitales 4, 5, 6, 7, 8 y 9; el pin 10 controla la retroiluminación. Quedan libres los pines digitales 0, 1, 2, 3, 11, 12 y 13.

Estos pines están agrupados en una fila propia en la parte superior derecha del shield. Encontrarás los pines analógicos libres debajo de la pantalla, cada uno etiquetado por separado. Si quieres utilizarlos, suelda allí una tira de conectores hembra.

Los pines 0 y 1 también son la interfaz serie. Si hay algo conectado a ellos, la carga del sketch suele fallar. Por eso, utiliza primero los pines 2, 3, 11, 12 y 13.

El código del programa

El sketch muestra “Funduino GmbH” en la primera línea de la pantalla. En la segunda línea aparece a la izquierda el nombre de la tecla que se está pulsando y a la derecha el tiempo de ejecución del programa en segundos.

La biblioteca LiquidCrystal ya está incluida en el IDE de Arduino y no es necesario instalarla por separado.

Los valores numéricos del bloque de programa Estado del botón (50, 195, 380, 555, 790) corresponden a las resistencias del shield. Pueden variar ligeramente según la serie de fabricación. Si un botón se reconoce incorrectamente, muestra el valor analógico en el monitor serie y ajusta los límites.

Sketch: Leer los botones del shield de teclado
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); //Indicación de los pines necesarios

// Crear algunas variables
int Taster = 0;
int Analogwert = 0;

#define Tasterrechts 0
#define Tasteroben 1
#define Tasterunten 2
#define Tasterlinks 3
#define Tasterselect 4
#define KeinTaster 5

// A partir de aquí se crea un nuevo bloque de programa llamado "Tasterstatus". Aquí solo se comprueba qué botón está pulsado.
int Tasterstatus()
{
  Analogwert = analogRead(A0); // Leer los botones del pin analógico A0.
  if (Analogwert > 1000) return KeinTaster;
  if (Analogwert < 50)   return Tasterrechts;
  if (Analogwert < 195)  return Tasteroben;
  if (Analogwert < 380)  return Tasterunten;
  if (Analogwert < 555)  return Tasterlinks;
  if (Analogwert < 790)  return Tasterselect;
  return KeinTaster; // Valor devuelto si no se ha pulsado ningún botón.
}
// Aquí termina el bloque de programa "Tasterstatus".

void setup()
{
  lcd.begin(16, 2);            // Iniciar la biblioteca del programa.
  lcd.setCursor(0, 0);         // Colocar el cursor arriba a la izquierda.
  lcd.print("Funduino GmbH");  // Mostrar el texto en la primera línea.
}

void loop()
{
  lcd.setCursor(12, 1);        // Mueve el cursor a la posición 12 de la segunda línea (0 = primera línea, 1 = segunda línea).
  lcd.print(millis() / 1000);  // Muestra los segundos transcurridos desde el inicio del programa.
  lcd.setCursor(0, 1);         // Mueve el cursor a la posición 0 de la segunda línea.

  Taster = Tasterstatus();     // Aquí el bucle salta a la sección de programa "Tasterstatus" indicada arriba y lee el botón pulsado.

  switch (Taster) // Según el botón pulsado, la siguiente instrucción switch-case decide qué mostrar en la pantalla LCD.
  {
    case Tasterrechts: // Si se ha pulsado el botón derecho ...
      {
        lcd.print("Derecha      "); // ... aparece esta línea. Los espacios detrás del texto borran el texto anterior de la línea.
        break;
      }
    case Tasterlinks:  // Si se ha pulsado el botón izquierdo ...
      {
        lcd.print("Izquierda       "); // ... aparece esta línea, etc.
        break;
      }
    case Tasteroben:
      {
        lcd.print("Arriba        ");
        break;
      }
    case Tasterunten:
      {
        lcd.print("Abajo       ");
        break;
      }
    case Tasterselect:
      {
        lcd.print("SELECT      ");
        break;
      }
    case KeinTaster:
      {
        lcd.print("Ningún botón ");
        break;
      }
  } // Termina la instrucción switch-case
} // Termina el bucle

Carcasa impresa en 3D

Calificar la guía

Comentarios

Haz una pregunta o comparte tu experiencia

Schreib uns, wenn etwas nicht funktioniert. Nenne dabei dein Board und die Fehlermeldung.

Revisamos cada comentario antes de publicarlo. Tu dirección de correo electrónico permanece con nosotros.