Skip to main content

Matrix Keypad code for use with Raspberry Pi

Project description

NOTICE

I have added support for the BeagleBone Black and would like help testing. If you are able please provide feedback to me at chris@chriscrumpacker.com

Introduction

Python Library for Matrix Keypads. Written and tested on a Model B Raspberry Pi. Supports both a 3x4 and 4x4 keypad included

Current Version:

v1.2.2

Project Page:

Project_Page

PyPI page:

PyPI_Page

Author

Author:

Chris Crumpacker

Email:

chris@chriscrumpacker.com

Web:

http://www.chriscrumpacker.com

Blog:

http://crumpspot.blogspot.com

Prerequisites

If you are using the Raspberry Pi you will need to install the Python Development Toolkit. First update your package list:

sudo apt-get update

Now install the Dev Kit:

sudo apt-get install python-dev

Then to install Rpi.GPIO itself:

sudo apt-get install python-rpi.gpio

Installing Setuptools next so that you can use PIP is also helpful:

https://pypi.python.org/pypi/setuptools/1.1

If the I2C Port expander MCP23017 or MCP23008 is being used on a RPi, the Adafruit Python library for I2C and the MCP will need to be installed.

You can clone the whole library like so:

git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git

or the two files needed can be pulled out, Adafruit_I2C.py & Adafruit_MCP230xx.py.

If using a BeagleBone Black you must install the Adafruit_BBIO. This will give us access to the Adafruit_BBIO.GPIO library that will interface with the pins. Instructions on installing the BBIO library can be found here. The easiest way to install is:

/usr/bin/ntpdate -b -s -u pool.ntp.org
opkg update && opkg install python-pip python-setuptools
pip install Adafruit_BBIO

For manual installation:

git clone git://github.com/adafruit/adafruit-beaglebone-io-python.git
#set the date and time
/usr/bin/ntpdate -b -s -u pool.ntp.org
#install dependency
opkg update && opkg install python-distutils
cd adafruit-beaglebone-io-python
python setup.py install

Install

You can use the source from just downloading the files or Install it as a library via PIP:

pip install matrix_keypad

If using the Adafruit I2C code on a Raspberry Pi, you will need to create links to the Adafruit I2C and MCP230xx code since they are not installed as packages.:

sudo ln -s [path to Adafruit python code]/AdafruitMCP230xx/*.py /usr/local/lib/python2.7/dist-packages/matrix_keypad

Note: you will have to change the part in the brackets and maybe the path to the where the matrix keypad package is

Files Included

README.txt
LICENSE.txt
setup.py
matrix_keypad/
    __init__.py
    BBb_GPIO.py
    RPi_GPIO.py
    MCP230xx.py
    matrix_keypad_demo.py
    matrix_keypad_demo2.py

Usage

See the demo scripts included to see this all in action.

To call the library select which one you intend to use and use the correct line:

from matrix_keypad import MCP230xx

or:

from matrix_keypad import RPi_GPIO

or:

from matrix_keypad import BBb_GPIO

Then initialize and give the library a short name so it is easier to reference later. For the MCP version:

kp = MCP230xx.keypad(address = 0x21, num_gpios = 8, columnCount = 4)

The variables in the keypad function call in this example are the I2C address, then if you are using the MCP23017 or MCP23008 you have to put the number of GPIO pin avaialable (default is 8), Then the “columnCount” is 3 for the 4x3 keypads and 4 for the 4x4 keypads.

For the standard GPIO version you only have to reference the column count and only if you want to change it to the 4x4, it defaults at the 3x4:

kp = RPi_GPIO.keypad(ColumnCount = 4)

It is possible to just check to see if a digit is currently pressed.:

checkKeypad = kp.getKey()

Or a simple function to call the keypad library and loop through it waiting for a digit press

def digit():
    # Loop while waiting for a keypress
    digitPressed = None
    while digitPressed == None:
        digitPressed = kp.getKey()
    return digitPressed

Version History

v0.1.0:

Initial Scripts

v1.0.0:

Initial package build

v1.0.1:

Initial package build and push to PyPI

v1.0.2:

Updating the matrix_keypad_demo2.py to demo selecting the 4x4 keypad

v1.0.3:

Moved Version Log in README

Updated README Links

v1.0.4:

Updated References to include the PiLarm code as the inspiration for the “…demo2.py” code

v1.0.5:

Updates to the code in both main libs to fix some indenting and other issues from coping the code from blogger to a text file.

Updates to the keypad picking section for the constants to make it actually work

v1.0.6:

Fixes to more indenting issues. :(

v1.1.0:

Updated main libs and the demo code.

Added install directions to handle the links to the adafruit code

v1.1.1:

Updated …demo.py and demo2.py to reflect new package name.

Updated README as well

v1.1.2:

Updating the README project links

Updating the code’s comments

v1.1.3:

Repackage

v1.2b:

Beta code added for BeagleBone Black support

Updated the demo code to include examples intializing the BBb_GPIO code

Update all library and demo code with new Comment Header

v1.2.2:

Updated the BBb library with feedback from testers

Code References

Column and Row scanning adapted from Bandono’s matrixQPI which is wiringPi based.

Support for the BeagleBone Black has been added with the help of Daniel Marcus, Details on his project can be found here; dmarcstudios.com

matrix_keypad_demo2.py is based on some work that Jeff Highsmith had done in making his PiLarm that was featured on Make.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

matrix_keypad-1.2.2.zip (15.1 kB view details)

Uploaded Source

matrix_keypad-1.2.2.tar.gz (6.6 kB view details)

Uploaded Source

File details

Details for the file matrix_keypad-1.2.2.zip.

File metadata

  • Download URL: matrix_keypad-1.2.2.zip
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for matrix_keypad-1.2.2.zip
Algorithm Hash digest
SHA256 489d6516e42c39e833894c2bf685e184bbe841d6bbb8a21d3643165773f1e882
MD5 8387cbe565d80670cbc5542f900f571f
BLAKE2b-256 c19329a32b85032c00ca32c93c9877e647e29e18d24d97a944a4b22d33fc1785

See more details on using hashes here.

File details

Details for the file matrix_keypad-1.2.2.tar.gz.

File metadata

File hashes

Hashes for matrix_keypad-1.2.2.tar.gz
Algorithm Hash digest
SHA256 2a86b28e5b45a24dd8a6fbcbe6bebd2c01db101acaada356fb8c73d0b71338cc
MD5 87daf71d989ed9d40b8455d911743fc3
BLAKE2b-256 91bcd63e9f5109922465b6e497c1a970fe22dec016b13633c226d6db9347cac4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page