Ingo Lohs
Published © LGPL

iBridges-Lite 3x3 key-pad shield

A short introduction in Itead Studios 3x3 key-pad shield for e.g. Arduino

BeginnerProtip30 minutes711
iBridges-Lite 3x3 key-pad shield

Things used in this project

Hardware components

Itead iBridges-Lite v1.1
IM120417023 - its a shield
×1
Arduino UNO
Arduino UNO
×1

Software apps and online services

Arduino IDE
Arduino IDE

Story

Read more

Code

iBridges-Lite v1.1

C/C++
How to read the pressed key
int IBridge_Column_Pin0 = 7;
int IBridge_Column_Pin1 = 6;
int IBridge_Column_Pin2 = 5;

int IBridge_Row_Pin0 = 2;
int IBridge_Row_Pin1 = 3;
int IBridge_Row_Pin2 = 4;

void IBridge_GPIO_Config()
{ 
  pinMode(IBridge_Column_Pin0, OUTPUT);
  pinMode(IBridge_Column_Pin1, OUTPUT);
  pinMode(IBridge_Column_Pin2, OUTPUT);
  
  pinMode(IBridge_Row_Pin0, INPUT);
  pinMode(IBridge_Row_Pin1, INPUT);
  pinMode(IBridge_Row_Pin2, INPUT);
}

unsigned char IBridge_Read_Key()
{ 
  digitalWrite(IBridge_Column_Pin0, LOW);
  digitalWrite(IBridge_Column_Pin1, LOW);
  digitalWrite(IBridge_Column_Pin2, HIGH);

  if((digitalRead(IBridge_Row_Pin0)) &&  !(digitalRead(IBridge_Row_Pin1)) && !(digitalRead(IBridge_Row_Pin2)))
    return (1);
  if(!(digitalRead(IBridge_Row_Pin0)) && (digitalRead(IBridge_Row_Pin1)) &&  !(digitalRead(IBridge_Row_Pin2)))
    return (2);
  if(!(digitalRead(IBridge_Row_Pin0)) && !(digitalRead(IBridge_Row_Pin1)) &&   (digitalRead(IBridge_Row_Pin2)))
    return (3);
    
  digitalWrite(IBridge_Column_Pin0, LOW);
  digitalWrite(IBridge_Column_Pin1, HIGH);
  digitalWrite(IBridge_Column_Pin2, LOW);

  if((digitalRead(IBridge_Row_Pin0)) &&  !(digitalRead(IBridge_Row_Pin1)) && !(digitalRead(IBridge_Row_Pin2)))
    return (4);
  if(!(digitalRead(IBridge_Row_Pin0)) && (digitalRead(IBridge_Row_Pin1)) &&  !(digitalRead(IBridge_Row_Pin2)))
    return (5);
  if(!(digitalRead(IBridge_Row_Pin0)) && !(digitalRead(IBridge_Row_Pin1)) &&   (digitalRead(IBridge_Row_Pin2)))
    return (6);
    
  digitalWrite(IBridge_Column_Pin0, HIGH);
  digitalWrite(IBridge_Column_Pin1, LOW);
  digitalWrite(IBridge_Column_Pin2, LOW);

  if((digitalRead(IBridge_Row_Pin0)) &&  !(digitalRead(IBridge_Row_Pin1)) && !(digitalRead(IBridge_Row_Pin2)))
    return (7);
  if(!(digitalRead(IBridge_Row_Pin0)) && (digitalRead(IBridge_Row_Pin1)) &&  !(digitalRead(IBridge_Row_Pin2)))
    return (8);
  if(!(digitalRead(IBridge_Row_Pin0)) && !(digitalRead(IBridge_Row_Pin1)) &&   (digitalRead(IBridge_Row_Pin2)))
    return (9);  
    
  return(0);

}

void setup()
{
  IBridge_GPIO_Config();
  Serial.begin(9600);
}

void loop()
{
  unsigned char temp = 0;
  while(1)
  {
    temp = IBridge_Read_Key();
       
    switch (temp)
    {
      case 1:
        Serial.println("1");
        break;
      case 2:
        Serial.println("2");
        break;
      case 3:
        Serial.println("3");
        break;
      case 4:
        Serial.println("4");
        break;
      case 5:
        Serial.println("5");
        break;
      case 6:
        Serial.println("6");
        break;
      case 7:
        Serial.println("7");
        break;
      case 8:
        Serial.println("8");
        break;
      case 9:
        Serial.println("9");
        break;     

      default:
        break;
    }
      temp = 0;
      delay(200);
  }
}

Credits

Ingo Lohs
182 projects • 199 followers
I am well over 50 years and come from the middle of Germany.

Comments