본문 바로가기
아두이노(Arduino)/아두이노 기초

[아두이노기초.008]키패드로 LED제어하기

by 긱펀 2022. 6. 20.
반응형

 

 

 

 

오늘의 실습 미리보기(키패드 LED제어)

 

 

 

🚩 키패드란?

  • 키패드(keypad)는 블록이나 패드 단위로 정렬된 버튼들의 모임으로, 숫자, 기호, 알파벳 문자들을 이룬다. 
  • 숫자를 포함하는 패드는 숫자 키패드로 부른다. 숫자 키패드는 컴퓨터 자판 외에도 계산기, 푸시 버튼 전화, 자판기, ATM, POS 장치, 번호 자물쇠(부호 자물쇠), 디지털 도어락과 같이 주로 숫자 입력을 요구하는 다른 장치들에서 볼 수 있다. 

 

 

🚩 회로도

 

 

 

🚩 라이브러리 설치

[1] 스케치 > 라이브러리 포함하기 > 라이브러리 관리를 클릭합니다.

라이브러리 관리

 

[2] "Keypad" 라고 검색한 결과 "Keypad by Community...."를 찾아 설치 하기

Keypad 라이브러리 검색 및 설치


🚩 예제 1

  • 키패드 라이브러리를 불러옵니다.
  • 키패드와 관련된 여러가지 설정 코드를 넣습니다.
  • 키패드 입력값을 변수 myKey에 저장합니다.
  • myKey값이 '1'이면 10번 LED를 ON, '2'이면 11번 LED가 ON 됩니다.
#include <Keypad.h> // 키패드 라이브러리

const byte ROWS = 4; // 4개의 가로줄
const byte COLS = 4; // 4개의 세로줄
char hexaKeys[ROWS][COLS] = { // 키패드 버튼 위치
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // 키패드 가로 연결핀 번호
byte colPins[COLS] = {5, 4, 3, 2}; // 키패드 세로 연결핀 번호

Keypad key = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup(){
  Serial.begin(9600); // 시리얼 통신 시작
  // 10~11번핀 출력모드
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}
  
void loop(){
  char myKey = key.getKey(); // 키패드 입력값 저장
  if(myKey){
    Serial.println(myKey); // 키패드 입력값 출력
  }
  if(myKey == '1') {
    digitalWrite(10, HIGH); // 10번 LED ON
  }
  if(myKey == '2') {
    digitalWrite(11, HIGH); // 11번 LED ON
  }
}




 

🏴 유제 1

  • 키패드의 숫자 '3' 을 누르면 12번핀 LED가 ON, 문자 'A'를 누르면 13번핀  LED가 ON 되게 코딩을 해보세요.

 


🚩 예제 2

  • 키패드 '1', '2', '3', 'A' 를 누르면 각각 LED 10번, 11번, 12번, 13번핀이 ON 됩니다.
  • 키패드 '4'를 누르면 LED 10번이 OFF, '5'를 누르면 LED 11번이 OFF 됩니다.
#include <Keypad.h> // 키패드 라이브러리

const byte ROWS = 4; // 4개의 가로줄
const byte COLS = 4; // 4개의 세로줄
char hexaKeys[ROWS][COLS] = { // 키패드 버튼 위치
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // 키패드 가로 연결핀 번호
byte colPins[COLS] = {5, 4, 3, 2}; // 키패드 세로 연결핀 번호

Keypad key = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup(){
  Serial.begin(9600); // 시리얼 통신 시작
  // 10~11번핀 출력모드
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}
  
void loop(){
  char myKey = key.getKey(); // 키패드 입력값 저장
  if(myKey){
    Serial.println(myKey); // 키패드 입력값 출력
  }
  if(myKey == '1') {
    digitalWrite(10, HIGH); // 10번 LED ON
  }
  if(myKey == '2') {
    digitalWrite(11, HIGH); // 11번 LED ON
  }
  if(myKey == '3') {
    digitalWrite(12, HIGH); // 12번 LED ON
  }
  if(myKey == 'A') {
    digitalWrite(13 , HIGH); // 13번 LED ON
  }
  if(myKey == '4') {
    digitalWrite(10, LOW); // 10번 LED OFF
  }
  if(myKey == '5') {
    digitalWrite(11, LOW); // 11번 LED OFF
  }
}

 

🏴 유제 2

  • 키패드의 숫자 '6' 을 누르면 12번핀 LED가 OFF, 문자 'B'를 누르면 13번핀  LED가 OFF 되게 코딩을 해보세요.

🚩 예제 3

  • 키패드 "*'을 누르면 LED 10번~13번 모두가 OFF 됩니다.
#include <Keypad.h> // 키패드 라이브러리

const byte ROWS = 4; // 4개의 가로줄
const byte COLS = 4; // 4개의 세로줄
char hexaKeys[ROWS][COLS] = { // 키패드 버튼 위치
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // 키패드 가로 연결핀 번호
byte colPins[COLS] = {5, 4, 3, 2}; // 키패드 세로 연결핀 번호

Keypad key = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 

void setup(){
  Serial.begin(9600); // 시리얼 통신 시작
  // 10~11번핀 출력모드
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}
  
void loop(){
  char myKey = key.getKey(); // 키패드 입력값 저장
  if(myKey){
    Serial.println(myKey); // 키패드 입력값 출력
  }
  if(myKey == '1') {
    digitalWrite(10, HIGH); // 10번 LED ON
  }
  if(myKey == '2') {
    digitalWrite(11, HIGH); // 11번 LED ON
  }
  if(myKey == '3') {
    digitalWrite(12, HIGH); // 12번 LED ON
  }
  if(myKey == 'A') {
    digitalWrite(13 , HIGH); // 13번 LED ON
  }
  if(myKey == '4') {
    digitalWrite(10, LOW); // 10번 LED OFF
  }
  if(myKey == '5') {
    digitalWrite(11, LOW); // 11번 LED OFF
  }
  if(myKey == '6') {
    digitalWrite(12, LOW);
  }
  if(myKey == 'B') {
    digitalWrite(13, LOW);
  }
  if(myKey == '*') { // 10번~13번 LED OFF
    digitalWrite(10, LOW);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
  }
}

🏴 유제 3

  • 키패드의 '#' 을 누르면 LED 10번,11번,12번,13번 모두 ON 이 되게 코딩을 해보세요.

 


 

 

[1] 키패드 '7'을 누르면 LED 10번, 11번이 동시에 ON 되게 만드세요.

 

[2] 키패드 '8'을 누르면 LED 10번, 11번이 동시에 OFF 되게 만드세요.

 

[3] 키패드 '9'를 누르면 LED 12번, 13번이 동시에 ON 되게 만드세요.

 

[4] 키패드 'C'를 누르면 LED 12번, 13번이 동시에 OFF 되게 만드세요.

 

[5] 키패드 'D'를 누르면 LED 10번~13번 모두 동시에 ON 되었다가, 2초 후에 모두 OFF 되게 만드세요.

 

[6] 키패드 '0'을 누르면 LED 11번과 12번이 동시에 ON 되었다가, 3초 후에 모두 OFF 되게 만드세요.

 

 

 

 


 

728x90
반응형

댓글