#include <Keypad.h> // 키 매트릭스 모듈 사용을 위한 헤더파일
int Buzzer_Pin = 3; // 3 번핀에 수동 부저 + 연결
int Tones[8] = { 261, 261, 294, 330, 349, 392, 440, 494 };
// 더미 도 레 미 파 솔 라 시
int Tones_Number; // Tones 에 들어갈 변수
char key; // 현재키값 변수
char key_h; // 키값유지 변수
KeyState key_c; // 키 상태값 변수
const byte ROWS = 4; // 키좌표값
const byte COLS = 4; // 키좌표값
char keys[ROWS][COLS] = { // 스위치 설정값
{ 0, 1, 2, 3 },
{ 4, 5, 6, 7 },
{ 8, 9, 10, 11 },
{ 12, 13, 14, 15 }
};
byte rowPins[ROWS] = { 7, 6, 5, 4 };
// 핀 번호
byte colPins[COLS] = { 8, 9, 10, 11 };
// 핀 번호
// 키보드 사용 전 설정 및 준비
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup()
{
// 초기화
}
/*
도트매트릭스 키보드로 피아노 연주하듯이 소리 낸다
*/
void loop()
{
// 무한루프
key = keypad.getKey(); // 키보드값 읽어오기
key_c = keypad.getState(); // 키보드 상태 읽어오기
// 0 : 입력 없음
// 1 : 입력됨
// 2 : 입력 중
// 3 : 입력 종료
if (key != NO_KEY) // 만약 새로운 키값이 들어오면
{ 
key_h = key; // 새로운 키값을 key_h 에 입력
} 
if (key_c == 0)
{ 
// 만약 입력이 없을 때
noTone(Buzzer_Pin); // 수동 부저 종료
} 
else
{ 
// 입력이 있을 때
if (key_h > 7) key_h = 0; // key_h 의 값이 7 보다 크면 key_h 의 
 // 값을 0 으로 만들어라
tone(Buzzer_Pin, Tones[key_h]); // 들어온 키값에 대한 소리를 내라
} 
}