Seeedstudio Electronic Brick - 9 Button KeyPad Module

Polygon
Offline
Зарегистрирован: 21.07.2011

Имееться девятикнопочная клавиатура  www.robotshop.com/seeedstudio-electronic-brick-9-button-keypad-module.html.

Данная клавиатура соединятеся с Arduino по средствам шины схематическое изображение которой представлено на изображении ниже

Не могу разобраться как с ней работать.  Все что я смог найти это пример кода из которого мне ничего не понятно.

int  KeyOPin = 5;              
int KeyIPin = 2; 
unsigned char i;                                 
unsigned char n;
unsigned char key = 0;                       
unsigned char oldkey = 0;              
unsigned char press = 0;
unsigned char reg = 1;




void setup() 
{
  Serial.begin(9600);
  for(i=0;i<3;i++)     pinMode((KeyOPin + i), OUTPUT);     
  for (i=0;i<3;i++)    pinMode(( KeyIPin + i), INPUT); 
}     

void loop()
{
   scankey();
   if (press)
   {
     press=0;
     Serial.print("Keycode is ");
     Serial.println(oldkey,HEX);
   }
}

void scankey()
{
  reg = 1;
  for (i=0;i<3;i++)
  {
    for (n=0;n<3;n++)
    {
      if((reg>>n)&1)        digitalWrite(KeyOPin+n , HIGH); 
      else                  digitalWrite(KeyOPin+n , LOW);
    }   
    for (n=0;n<3;n++)
    {
      if(digitalRead(KeyIPin + n))
      {     
        key = key | (1<<(4+n));    
        key = key | reg ; 
      }                    
    }
    reg = reg << 1;
  }

  if (key & 0xf8)
  {
    if (key!=oldkey)   {   
      press = 1;  
      oldkey = key ; 
    }
  }
  else       oldkey = 0;


  key = 0;
}

 Обьясните пожалуйста как это работает или дайте ссылку на ознакомительный материал.

Adessit
Adessit аватар
Offline
Зарегистрирован: 12.04.2011

Найти бы схему этого модуля. А так только гонять этот код. Модуль как я понял использует 6 портов  со 2го по 7 включительно.

А дальше я пока не вкурил. Остаётся проверить живучесть кода Вам. Когда кнопка любая нажата press=1 , а дальше снять значение с переменной oldkey

Polygon
Offline
Зарегистрирован: 21.07.2011

Тому кто написал этот код надо руки вырвать. В действительности все работает очень просто. Если не брать во внимание подтягивающие резисторы то электрическая схема данной клавиатуры имеет вид представленный на изображении ниже

То есть необходимо поочередно подавать напряжение на входы №5,6,7. При нажатой кнопке сигнал появиться на одном из выходов №4,3,2