Hardware Components
Demonstration




How To
  • Connect keypad to PHPoC Blue
  • Upload source code to PHPoC Blue
  • Click "Run" button on PHPoC Debugger
  • Press some button and see the output console on PHPoC Debugger
Note

The source code works for both keypad 3x4 and 4x4

Wiring

Click image for larger version

Name:	wiring.PNG
Views:	314
Size:	141.0 KB
ID:	1602
Click image for larger version

Name:	phpoc_key_pad.jpg
Views:	42
Size:	51.0 KB
ID:	1603



Source Code
PHP Code:
<?php

include_once "/lib/sd_340.php";

$keypad_row_pins = array(-1, -1, -1, -1); // R1, R2, R2, R4
$keypad_col_pins = array(-1, -1, -1, -1); // C1, C2, C3, C4
$keypad_keys = array(
        array(
"1""2""3""A"),
        array(
"4""5""6""B"),
        array(
"7""8""9""C"),
        array(
"*""0""#""D")
    );

function 
keypad_setup($pin_1$pin_2$pin_3$pin_4$pin_5$pin_6$pin_7$pin_8)
{
    global 
$keypad_row_pins$keypad_col_pins;

    
$keypad_row_pins[0] = $pin_1;
    
$keypad_row_pins[1] = $pin_2;
    
$keypad_row_pins[2] = $pin_3;
    
$keypad_row_pins[3] = $pin_4;
    
$keypad_col_pins[0] = $pin_5;
    
$keypad_col_pins[1] = $pin_6;
    
$keypad_col_pins[2] = $pin_7;
    
$keypad_col_pins[3] = $pin_8;
}

function 
keypad_get_key($row_num$col_num)
{
    global 
$keypad_row_pins$keypad_col_pins;
    global 
$keypad_keys;

    for(
$i 0$i $row_num$i++)
        
uio_setup(0$keypad_row_pins[$i], "out_pp low");

    for(
$j 0$j $col_num$j++)
        
uio_setup(0$keypad_col_pins[$j], "in_pd");

    for(
$i 0$i $row_num$i++)
    {
        
uio_setup(0$keypad_row_pins[$i], "out_pp high");

        for(
$j 0$j $col_num$j++)
        {
            if(
uio_in(0$keypad_col_pins[$j]) == 1)
            {
                return 
$keypad_keys[$i][$j];
            }
        }

        
uio_setup(0$keypad_row_pins[$i], "out_pp low");
    }

    return 
"";
}

function 
keypad34_setup($pin_1 19$pin_2 18$pin_3 17$pin_4 16$pin_5 15$pin_6 14$pin_7 13)
{
    
keypad_setup($pin_1$pin_2$pin_3$pin_4$pin_5$pin_6$pin_7, -1);
}

function 
keypad44_setup($pin_1 19$pin_2 18$pin_3 17$pin_4 16$pin_5 15$pin_6 14$pin_7 13$pin_8 12)
{
    
keypad_setup($pin_1$pin_2$pin_3$pin_4$pin_5$pin_6$pin_7$pin_8);
}

function 
keypad34_get_key()
{
    return 
keypad_get_key(43);
}

function 
keypad44_get_key()
{
    return 
keypad_get_key(44);
}

keypad34_setup();

while(
1)
{
    if(
$key keypad34_get_key())
    {
        echo 
$key;
        
usleep(500000);
    }
}
?>