phpoc_man
Published © GPL3+

PHPoC - Keypad

How to use keypad with the PHPoC.

BeginnerShowcase (no instructions)30 minutes623
PHPoC - Keypad

Things used in this project

Story

Read more

Schematics

wiring_NnPrCRw0Ku.PNG

phpoc_key_pad_Otee5jKH9c.jpg

Code

task0.php

PHP
<?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(4, 3);
}

function keypad44_get_key()
{
	return keypad_get_key(4, 4);
}

keypad34_setup();

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

Credits

phpoc_man

phpoc_man

62 projects • 405 followers

Comments