Перейти к содержимому






Фотография
- - - - -

Клавиатура 4х4 (ID:330)

Написано admin , 26 April 2015 · 2540 Просмотров

клавиатура
Клавиатура 4х4 (ID:330) На плате установлено 16 кнопок и имеется разъем с девятью контактами.
Примерный способ подключения клавиатуры к плате Arduino:
G - контакт для подключения общего провода GND Arduino.
A - контакт для подключения к выводу 2 Arduino.
B - контакт для подключения к выводу 3 Arduino.
C - контакт для подключения к выводу 4 Arduino.
D - контакт для подключения к выводу 5 Arduino.
1 - контакт для подключения к выводу 6 Arduino.
2 - контакт для подключения к выводу 7 Arduino.
3 - контакт для подключения к выводу 8 Arduino.
4 - контакт для подключения к выводу 9 Arduino.
Подключение питания к плате не требуется.
Кнопки на плате соединены особым образом, поэтому для работы с 16 кнопками понадобится всего 9 выводов Arduino.
Примерный скетч для определения названия нажатой кнопки выглядит так:
void setup() {
  Serial.begin(9600);
  Serial.println("4x4...");
  //определяем выводы Arduino
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  pinMode(5, INPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
}
int row[]={
  9,8,7,6}; //указываем выводы горизонтальных рядов кнопок
int cols[]={
  5,4,3,2}; //указываем выводы вертикальных рядов кнопок
//коды нажатия кнопок
char simbols[][2]={
  {
    0,'D'    }
  ,

  {
    1,'C'    }
  ,

  {
    2,'B'    }
  ,

  {
    3,'A'    }
  ,

  {
    4,'#'    }
  ,

  {
    5,'9'    }
  ,

  {
    6,'6'    }
  ,

  {
    7,'3'    }
  ,

  {
    8,'0'    }
  ,

  {
    9,'8'    }
  ,

  {
    10,'5'    }
  ,

  {
    11,'2'    }
  ,

  {
    12,'*'    }
  ,

  {
    13,'7'    }
  ,

  {
    14,'4'    }
  ,

  {
    15,'1'    }

};

void loop() {

  for(int i=0;i<4;i++){

    digitalWrite(row[i], HIGH);

    for(int j=0;j<4;j++){

	  if(digitalRead(cols[j])==HIGH){

	    Serial.println(FindKey(4*i+j)); //выводим код нажатой кнопки

	  }

    }

    digitalWrite(row[i], LOW); 

  }

}

char FindKey(unsigned int keyCode){

  for(int i=0;i<16;i++){

    if(simbols[i][0]==keyCode){

	  return simbols[i][1];

    }

  }

}
Включаем монитор порта и видим, какую кнопку мы нажали.
Ссылка на витрину магазина http://dvrobot.ru/238/455.html





Trackbacks для записи [ Trackback URL ]

Для данной записи нет trackbacks.

Последние комментарии