0% found this document useful (0 votes)
21 views20 pages

EmbeddedWorkshop 09 Keypad

1) The document discusses connecting and programming a keypad and LCD display for an Arduino robotics project. It describes the keypad hardware, connecting it to Arduino pins, and reading input codes. 2) It also covers connecting and using a 16x2 LCD display with Arduino. The LCD requires 7 pins in 4-bit mode and can display text using functions like print and setCursor. 3) The document provides exercises to display keypad input on the LCD and control a robot's state from the keypad while showing status on the LCD.

Uploaded by

Darwin Vargas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views20 pages

EmbeddedWorkshop 09 Keypad

1) The document discusses connecting and programming a keypad and LCD display for an Arduino robotics project. It describes the keypad hardware, connecting it to Arduino pins, and reading input codes. 2) It also covers connecting and using a 16x2 LCD display with Arduino. The LCD requires 7 pins in 4-bit mode and can display text using functions like print and setCursor. 3) The document provides exercises to display keypad input on the LCD and control a robot's state from the keypad while showing status on the LCD.

Uploaded by

Darwin Vargas
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 20

Embedded Programming and

Robotics
Lesson 9
Keypad and LCD Display

Keypad and LCD Display 1


The Keypad
The keypad is similar to a telephone
keypad, with a few extra keys
Youll need to download libraries to
run it from
http://playground.arduino.cc/Code/
Keypad

Keypad and LCD Display 2


Connecting the Keypad
The keypad requires 8 I/O pins, one per row and one per column
This is a lot considering what is available
Connect power and ground

Keypad and LCD Display 3


Keypad Programming Overview
The keypad doesnt output characters; it outputs scan codes
It requires 8 digital inputs, 4 for the rows and 4 for the columns
When you create the Keypad object, you can map these to characters

Keypad and LCD Display 4


Include Files
#include <Keypad.h>
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>

Keypad and LCD Display 5


Set up Keypad data
const byte numRows = 4; //number of rows on the
keypad
const byte numCols = 4; //number of columns on the
keypad
Pins connected to rows and columns
byte rowPins[numRows] = {38, 36, 34, 32}; //Rows 0
to 3
byte colPins[numCols] = {30, 28, 26, 24}; //Columns
0 to 3

Keypad and LCD Display 6


Set Up Keypad Mapping
//keymap maps buttons to characters
char keymap[numRows][numCols] =
{
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};

Keypad and LCD Display 7


Create a Keypad Object
Keypad myKeypad = Keypad(makeKeymap(keymap),
rowPins, colPins, numRows, numCols);

Keypad and LCD Display 8


Get a Character
Determine if there is anything from the keypad, and get it if there is.
Note that NO_KEY is defined in key.h as binary zero.
char keypressed = myKeypad.getKey();
if (keypressed != NO_KEY)
{
Serial.print("Key pressed ");
Serial.println(keypressed + '0');
}

Keypad and LCD Display 9


Using the Keypad
Best to use the keypad in programs that do not use delay(), since that
can make it seem unresponsive
We used this in a robot that had an Arduino Mega so we could choose
programs during operation, rather than loading new programs every
time we changed something.

Keypad and LCD Display 10


The Liquid Crystal Display (LCD)
The LCD panel has 2 lines of 16 characters each
It can be used to display status, time, direction, etc.
Less useful in robots, and more with Raspberry Pi

Keypad and LCD Display 11


The Liquid Crystal Display (LCD)
The Hitachi-compatible LCDs can be controlled in two modes: 4-bit or
8-bit
The 4-bit mode requires seven I/O pins from the Arduino, while the 8-
bit mode requires 11 pins.
For displaying text on the screen, you can do nearly everything in 4-
bit mode, which is what well use

Keypad and LCD Display 12


LCD Panel Wiring
Vdd connects to +5
Vo controls the brightness
Vss connects to ground

Keypad and LCD Display 13


LCD Panel Wiring
Before wiring the LCD screen to your Arduino we suggest to solder a
pin header strip to the connector of the LCD screen
Connect the following pins:
LCD RS pin to digital pin 12
LCD Enable pin to digital pin 11
LCD D4 pin to digital pin 5
LCD D5 pin to digital pin 4
LCD D6 pin to digital pin 3
LCD D7 pin to digital pin 2

Keypad and LCD Display 14


LCD Panel Wiring
You can connect a 10K-Ohm potentiometer to the V0 pin, controlling
the brightness. (We didnt order this part and it isnt necessary)

Keypad and LCD Display 15


The Liquid Crystal Display (LCD)
LCD Panel Pins:
A register select (RS) pin that controls where in the LCD's memory
you're writing data to. You can select either the data register, which
holds what goes on the screen, or an instruction register, which is
where the LCD's controller looks for instructions on what to do next.
A Read/Write (R/W) pin that selects reading mode or writing mode
An Enable pin that enables writing to the registers

Keypad and LCD Display 16


The Liquid Crystal Display (LCD)
8 data pins (D0 -D7). The states of these pins (high or low) are the
bits that you're writing to a register when you write, or the values
you're reading when you read.
There's also a display constrast pin (Vo), power supply pins (+5V and
Gnd) and LED Backlight (Bklt+ and BKlt-) pins that you can use to
power the LCD, control the display contrast, and turn on and off the
LED backlight, respectively.

Keypad and LCD Display 17


The LCD Panel
#include <LiquidCrystal.h>
Set up the LiquidCrystal object and tell it the pins (note these are on
an Arduino Mega)
LiquidCrystal lcd(42, 44, 46, 48, 50, 52);

Keypad and LCD Display 18


LCD Functions
Initializes the panel with columns and rows
lcd.begin(16, 2);
Clears the panel
lcd.clear();
Display something
lcd.print(Hello, World!");
Set the cursor position to col, row
lcd.setCursor(col, row);

Keypad and LCD Display 19


Programming Exercise
First program: Write a program that takes whatever you type at the
keypad and puts it on the LCD display
Second program: Write a program that lets you stop the robot and
restart it from the keypad, and shows the state on the LCD panel

Keypad and LCD Display 20

You might also like