LCD Keypad Shield for Arduino

LCD Keypad Shield for Arduino

LCD Keypad Shield for Arduino


Brand: DFRobot Reward Points: 10 SKU: DFR0009
$11.55
Stock: 624
Qty : Price :
2-4 $11.30
5-9 $10.90
10+ $9.90
Reward Points: 1150



INTRODUCTION

This is a very popular LCD Keypad shield for Arduino and other variants. It includes a 2x16 LCD display and 6 momentary push buttons. Pins 4, 5, 6, 7, 8, 9 and 10 are used to interface with the LCD. Just one Analog Pin 0 is used to read the five pushbuttons. The LCD shield supports contrast adjustment and back-lit on/off functions. It also exposes five analog pins with DFRobot color code for easy analog sensor plugging and display. The on board LED indicates power on.

This design is great since easily lets you keep connecting sensors to the rest of the pins, and use it for monitoring or menu selection with the push buttons even for gaming. Often project applications require testing or debugging. Displaying information right away help on most occasions when a computer is not at reach. If you are planning to build something not attached to a computer and you need to check what is going on when you place it on position, this addition will prove very valuable to make sure the program is running well.

The used LCD pins are not exposed on top side of the board leaving only the unused ones. This way, conflict with LCD pins on top of the board will not happen anymore. This design includes a APC / Bluetooth v3 socket to enable you data transmission with your robot.


SPECIFICATION

  • Operating Voltage:5V
  • 5 Push buttons to supply a custom menu control panel
  • RST button for resetting arduino program
  • Integrate a potentiometer for adjusting the backlight 
  • Pin used:
    • D4-D7    -> LCD Data transmission
    • D8       -> Reset pin
    • D9       -> Enable pin
    • D10      -> Backlight control
  • APC&BT pin header for connecting wireless devices, directly compatible with:
  • Expanded available I/O pins
  • Expanded Analog Pinout with standard DFRobot configuration for fast sensor extension
  • Dimension: 80 x 58 mm

DOCUMENTS

DFR0009-PIN2.png

This example will test the LCD panel and the buttons.When you push the button on the shield,the screen will show the corresponding one.

Connection: Plug the LCD Keypad to the UNO(or other controllers)
 

/*************************************************************************************

  Mark Bramwell, July 2010

  This program will test the LCD panel and the buttons.When you push the button on the shield,
  the screen will show the corresponding one.
 
  Connection: Plug the LCD Keypad to the UNO(or other controllers)

**************************************************************************************/

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);           // select the pins used on the LCD panel

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;

#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

int read_LCD_buttons(){               // read the buttons
    adc_key_in = analogRead(0);       // read the value from the sensor 

    // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
    // we add approx 50 to those values and check to see if we are close
    // We make this the 1st option for speed reasons since it will be the most likely result

    if (adc_key_in > 1000) return btnNONE; 

    // For V1.1 us this threshold
    if (adc_key_in < 50)   return btnRIGHT;  
    if (adc_key_in < 250)  return btnUP; 
    if (adc_key_in < 450)  return btnDOWN; 
    if (adc_key_in < 650)  return btnLEFT; 
    if (adc_key_in < 850)  return btnSELECT;  

   // For V1.0 comment the other threshold and use the one below:
   /*
     if (adc_key_in < 50)   return btnRIGHT;  
     if (adc_key_in < 195)  return btnUP; 
     if (adc_key_in < 380)  return btnDOWN; 
     if (adc_key_in < 555)  return btnLEFT; 
     if (adc_key_in < 790)  return btnSELECT;   
   */

    return btnNONE;                // when all others fail, return this.
}

void setup(){
   lcd.begin(16, 2);               // start the library
   lcd.setCursor(0,0);             // set the LCD cursor   position 
   lcd.print("Push the buttons");  // print a simple message on the LCD
}
 
void loop(){
   lcd.setCursor(9,1);             // move cursor to second line "1" and 9 spaces over
   lcd.print(millis()/1000);       // display seconds elapsed since power-up

   lcd.setCursor(0,1);             // move to the begining of the second line
   lcd_key = read_LCD_buttons();   // read the buttons

   switch (lcd_key){               // depending on which button was pushed, we perform an action

       case btnRIGHT:{             //  push button "RIGHT" and show the word on the screen
            lcd.print("RIGHT ");
            break;
       }
       case btnLEFT:{
             lcd.print("LEFT   "); //  push button "LEFT" and show the word on the screen
             break;
       }    
       case btnUP:{
             lcd.print("UP    ");  //  push button "UP" and show the word on the screen
             break;
       }
       case btnDOWN:{
             lcd.print("DOWN  ");  //  push button "DOWN" and show the word on the screen
             break;
       }
       case btnSELECT:{
             lcd.print("SELECT");  //  push button "SELECT" and show the word on the screen
             break;
       }
       case btnNONE:{
             lcd.print("NONE  ");  //  No action  will show "None" on the screen
             break;
       }
   }
}

This example shows that reads an analog input on pin 1, prints the result to the LCD. This program takes the temperture sensor LM35 for example.


What you need

  1. DFRduino UNO R3
  2. LCD Keypad Shield For Arduino
  3. Analog Linear Temperature Sensor


Connection:

Plug the LCD Keypad to the UNO(or other controllers)

Temperture sensor:

S(blue) -- A1()

Note: A0 has been occupied.

VCC(red) -- VCC

GND(black) -- GND

Tricks for changing sensor cable pin mapping


Connction Diagram

 

DFR0009+LM35.png
 
DFR0009+TEM.jpg
/*******************************************************

   Description:
   Reads an analog input on pin 1, prints the result to the LCD.
   This program takes the temperture sensor LM35 for example. 
  
   Connection:
   Plug the LCD Keypad to the UNO(or other controllers)
   Temperture sensor:
   S(blue) -- A1()  
     Note: A0 has been occupied.
   VCC(red) -- VCC
   GND(black) -- GND

********************************************************/

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);        // select the pins used on the LCD panel

unsigned long tepTimer ;    

void setup(){ 
    lcd.begin(16, 2);                       // start the library
}

void loop(){ 
    lcd.setCursor(0, 0);                   // set the LCD cursor   position 
    int val;                               // variable to store the value coming from the analog pin 
    double data;                           // variable to store the temperature value coming from the conversion formula
    val=analogRead(1);                     // read the analog in value:
    data = (double) val * (5/10.24);       // temperature conversion formula
    
    if(millis() - tepTimer > 500){         // output a temperature value per 500ms 
             tepTimer = millis();

             // print the results to the lcd
             lcd.print("T: ");               
             lcd.print(data);             
             lcd.print("C");              
     } 

Function Explanation

LiquidCrystal(rs, enable, d4, d5, d6, d7)

Creates a variable of type LiquidCrystal. The display can be controlled using 4 or 8 data lines. If the former, omit the pin numbers for d0 to d3 and leave those lines unconnected. The RW pin can be tied to ground instead of connected to a pin on the Arduino; if so, omit it from this function's parameters. for example:

  LiquidCrystal lcd(8, 9, 4, 5, 6, 7);  

lcd.begin(cols, rows)

Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display. begin() needs to be called before any other LCD library commands.for example:

  lcd.begin(16, 2);    

lcd.setCursor(col,row)

Set the location at which subsequent text written to the LCD will be displayed. for example:

  lcd.setCursor(0,0);  

lcd.print(data)

Prints text to the LCD.for example:

  lcd.print("hello, world!");  

lcd.write(data)

Write a character to the LCD.


More function can see:


 

SHIPPING LIST

  • LCD Keypad Shield for Arduino    1unit

REVIEWS