Keypad - 12 Button (COM-08653 ROHS)

This keypad is a basic 12 button pad that is used for user input. These buttons are setup in matrix format which allows the microcontroller to 'scan' the 7 pins to see which of the 12 buttons are being pressed.

Hello World

Import programInput_Keypad

Sparkfun 12 input keypad that hooks up and is built in a 4X3 matrix form.


Import libraryKeyPad

Keypad that has 12 keys for input



How The Component Works

The keypad pins correspond to either a certain row or certain column then based on which ones are activated then microcontroller can pick out which button was pressed.


Pin Connections

The Keypad is connected through DigitalIn and DigitalOut pins on the microcontroller and for this we used p21-p27. The schematic is built as follows:


Physical Layout


Video Demo

Datasheet & Sparkfun Order Page



Example Code

Example Code for main.cpp

#include "mbed.h"
#include "KeyPad.h"

/*  DigitalOut columnoneout     ( p25 );    // pin 3 on keypad 
    DigitalOut columntwoout     ( p27 );    // pin 1 on keypad
    DigitalOut columnthreeout   ( p23 );    // pin 5 on keypad

    DigitalIn rowonein          ( p26 );    // pin 2 on keypad 
    DigitalIn rowtwoin          ( p21 );    // pin 7 on keypad
    DigitalIn rowthreein        ( p22 );    // pin 6 on keypad
    DigitalIn rowfourin         ( p24 );    // pin 4 on keypard */

#include <iostream>
int main() {
    Serial pc(USBTX, USBRX); // tx, rx
    KeyPad2 keypad(p25, p27, p23, p26, p21, p22, p24);
    DigitalOut led1(LED1);
    DigitalOut led2(LED2);
    DigitalOut led3(LED3);
    DigitalOut led4(LED4);
    led1 = 0; led2 = 0; led3 = 0; led4= 0;
    pc.printf("starting to print\n");
    while(1) {
        std::vector<int> keys =  keypad.getkey();
        for (int i=0;i<keys.size();i++){
            pc.printf("\nValue:  %d : ",keys[i]);   

You need to log in to post a discussion