Arduino and Python Serial Communication - Keypad Display
by Michalsky in Circuits > Arduino
5552 Views, 15 Favorites, 0 Comments
Arduino and Python Serial Communication - Keypad Display

This Project is made for mac users but it can also be implemented for Linux and Windows, the only step that should be different is the installation.
Software Installation
- Download and Install Arduino -> https://www.arduino.cc/en/Main/Software
- Download and Install Python 2.7 -> https://www.python.org/downloads/
- Download Python library "pyserial-2.7.tar.gz" -> https://pypi.python.org/pypi/pyserial
- Unzip pyserial-2.7.tar.gz
- Open Terminal and type:
cd /users/"Your-User-Account"/Downloads/pyserial-2.7
sudo python setup.py install
Software installation ready!
Wiring




- Arduino Uno
- Sparkfun 12 Button keypad
The wiring is done without external resistors, instead I used the internal Pullup-Resistors of the microcontroller (internal Pullup-Resistors of Arduino have a value of 20K-Ohm to 50K-Ohm)
To activate the internal Pullup-Resistors set the INPUT-Pins HIGH in the code
If you use another Keypad look at the data sheet for the right wiring, otherwise it could damage your microcontroller
Arduino Code

- First we define a chars-Matrix for the Keys
- The keypad uses normal switch connectors that are arranged in 4 rows (Pins 7,2,3 and 5) and 3 columns (Pins 6,8 and 4), are defined as Arrays rowPins and colPins
- The setup() function
- Open the serial gate with Serial.begin();
- Set columns as OUTPUT-Pins HIGH
- Activate the Pullup-Resistors, to do this set rows as INPUT-Pins HIGH;
- The getkey() function
- Set every row LOW and test if one of the columns are LOW. Because of the Pullup-Resistors are all rows HIGH until one key is pushed down. The pushed key generate a LOW-Signal at the INPUT-Pin. This LOW indicates the pushed key in this row and column
- Wait until the key is released and returns the char of the keymap-Array or 0 if no key was pushed
- Use a delay(debounceTime) to stabilise the signal
Downloads
Python_2.7 Code

- Import the Serial Library
- Define a variable connected=FALSE, later is this variable used to test if the serial connection is available or not
- Open the Serial Port with serial.Serial("Name of your Serial Port", baud)
- To get the name of your serial port click -> Tools/Serial Port in the Arduino IDLE
- the baud should be the same as in the Arduino Code
- In a while loop test if the connection is available or not reading the serial signal and setting the variable connected=TRUE, it loops until it gets serial connection
- After the connection read the serial in a while loop and put this input in a new variable "var"
- close the port with ser.close()