아두이노 4×4 Keypad Test

키패드

키패드는 여러 개의 스위치들이 반복적으로 나열된 것으로 전자식 잠금장치, 통신장치 등에 많이 사용됩니다.


그림 출처: circuitdigest.com

키패드 단자의 개수는 행(row)과 열(column)의 합이 됩니다.
예를들어, 4×4 키패드 단자의 개수는 4+4=8이 됩니다.

아두이노와 키패드의 단자는 1:1로 연결합니다.

라이브러리 설치 및 키패드 테스트

아두이노 기본 명령어로 키패드를 직접 다룰 수도 있지만 제어를 편리하게 하려면 라이브러리를 사용합니다. (이미 설치된 경우 건너뜁니다.)

  • 아두이노 메뉴: 스케치 > 라이브러리 포함하기 > 라이브러리 관리…

라이브러리 매니저 창에서 ‘keypad’로 검색합니다. ‘keypad’가 보이면 [설치]를 눌러서 설치합니다.
이미 설치가 되어 있는 경우에는 다시 설치할 필요는 없습니다.

아래와 같이 소스 코드를 작성합니다.

#include <Keypad.h>
 
const byte ROWS = 4;    // 행(rows) 개수
const byte COLS = 4;    // 열(columns) 개수
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
 
byte rowPins[ROWS] = {6, 7, 8, 9};   // R1, R2, R3, R4 단자가 연결된 아두이노 핀 번호
byte colPins[COLS] = {5, 4, 3, 2};   // C1, C2, C3, C4 단자가 연결된 아두이노 핀 번호
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
void setup() {
  Serial.begin(9600);
}
   
void loop() {
  char key = keypad.getKey();
   
  if (key) {
    Serial.println(key);
  }
}

아두이노에 업로드 한 다음 시리얼 모니터를 켭니다. 키패드를 누르면 해당 키패드의 내용(문자열)이 출력됩니다.

키패드를 누를 때마다 특정 메시지가 출력되도록 하고 싶으면 소스 코드를 아래와 같이 수정합니다.

#include <Keypad.h>
 
const byte ROWS = 4;    // 행(rows) 개수
const byte COLS = 4;    // 열(columns) 개수
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
 
byte rowPins[ROWS] = {6, 7, 8, 9};   // R1, R2, R3, R4 단자가 연결된 아두이노 핀 번호
byte colPins[COLS] = {5, 4, 3, 2};   // C1, C2, C3, C4 단자가 연결된 아두이노 핀 번호
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
 
void setup() {
  Serial.begin(9600);
}
  
void loop() {
  char key = keypad.getKey();
  
  if (key) {
    switch(key) {
      case 'A': 
        Serial.println("Hello?");
        break;
      case 'B': 
        Serial.println("I love you.");
        break;
      default:
        Serial.println(key);
        break;
    }
  }
}

목차