Hi guys,
This is a polling code for interfacing keypad in MQX.
while(1)
{
lwgpio_set_value(&Column1,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Column2,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Column3,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Column4,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row1,LWGPIO_VALUE_LOW);
lwgpio_set_value(&Row2,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row3,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row4,LWGPIO_VALUE_HIGH);
if((lwgpio_get_value(&Column1) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column1) == 0));
printf("Key pressed: 1\n");
}
if((lwgpio_get_value(&Column2) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column2) == 0));
printf("Key pressed: 2\n");
}
if((lwgpio_get_value(&Column3) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column3) == 0));
printf("Key pressed: 3\n");
}
if((lwgpio_get_value(&Column4) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column4) == 0));
printf("Key pressed: A\n");
}
lwgpio_set_value(&Row1,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row2,LWGPIO_VALUE_LOW);
lwgpio_set_value(&Row3,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row4,LWGPIO_VALUE_HIGH);
if((lwgpio_get_value(&Column1) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column1) == 0));
printf("Key pressed: 4\n");
}
if((lwgpio_get_value(&Column2) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column2) == 0));
printf("Key pressed: 5\n");
}
if((lwgpio_get_value(&Column3) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column3) == 0));
printf("Key pressed: 6\n");
}
if((lwgpio_get_value(&Column4) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column4) == 0));
printf("Key pressed: B\n");
}
lwgpio_set_value(&Row1,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row2,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row3,LWGPIO_VALUE_LOW);
lwgpio_set_value(&Row4,LWGPIO_VALUE_HIGH);
if((lwgpio_get_value(&Column1) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column1) == 0));
printf("Key pressed: 7\n");
}
if((lwgpio_get_value(&Column2) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column2) == 0));
printf("Key pressed: 8\n");
}
if((lwgpio_get_value(&Column3) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column3) == 0));
printf("Key pressed: 9\n");
}
if((lwgpio_get_value(&Column4) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column4) == 0));
printf("Key pressed: C\n");
}
lwgpio_set_value(&Row1,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row2,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row3,LWGPIO_VALUE_HIGH);
lwgpio_set_value(&Row4,LWGPIO_VALUE_LOW);
if((lwgpio_get_value(&Column1) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column1) == 0));
printf("Key pressed: *\n");
}
if((lwgpio_get_value(&Column2) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column2) == 0));
printf("Key pressed: 0\n");
}
if((lwgpio_get_value(&Column3) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column3) == 0));
printf("Key pressed: #\n");
}
if((lwgpio_get_value(&Column4) == 0))
{
_time_delay(10);
while((lwgpio_get_value(&Column4) == 0));
printf("Key pressed: D\n");
}
}
}
initialize rows and columns by
mentioned only one pin here.
#define R1 (GPIO_PORT_C | GPIO_PIN11) //Row 1
#define R1_MUX_GPIO (LWGPIO_MUX_C11_GPIO)
if (!lwgpio_init(&Row1, R1, LWGPIO_DIR_OUTPUT,
LWGPIO_VALUE_LOW))
{
printf("Initializing Row 1 GPIO as output failed.\n");
}
else
{
// switch pin functionality (MUX) to GPIO mode
lwgpio_set_functionality(&Row1, R1_MUX_GPIO);
}
trying to generate a code for keypad using interrupts. will post it as soon i get it.
Thanks and regards,
Olivia