Menu
CoddyTech

사이먼: 버튼과 음표

Coddy Arduino 여정의 프로젝트 섹션에 포함된 레슨. 24개 중 13번째.

Simon은 기억력 게임입니다. 보드에서 색깔 조명과 음으로 패턴을 재생하면, 버튼을 눌러 패턴을 따라 하면 됩니다. 매 라운드마다 실수할 때까지 패턴이 하나씩 늘어납니다. 색은 네 가지이며, 각각 버튼, LED, 음이 하나씩 있습니다.

모든 것이 네 개씩 있으므로 배열을 사용하면 스케치가 짧아집니다. 모든 배열에서 인덱스 0은 빨간색, 1은 초록색, 2는 파란색, 3은 노란색이므로, i라는 하나의 숫자로 어디서나 색을 나타냅니다.

const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};

for 루프는 네 개의 버튼을 모두 확인합니다. 두 순간에 동작합니다. 버튼을 누를 때(현재는 LOW, 직전에는 HIGH)와 버튼에서 손을 뗄 때(현재는 HIGH, 직전에는 LOW)입니다. lastState 배열은 각 버튼의 마지막 읽기 값을 저장합니다. 이후 단계에서는 버튼에서 손을 뗄 때 누름으로 셉니다. 이 버튼은 바운스가 없으므로 에지 확인만으로 충분합니다.

challenge icon

챌린지

중급

네 가지 색상이 연주되도록 하세요:

  • setup()에서 for 루프를 사용해 LED 핀을 출력으로 설정하고 버튼 핀을 INPUT_PULLUP으로 설정합니다
  • 버튼 i를 누르면 ledPins[i]를 켜고 핀 8에서 notes[i]를 연주합니다
  • 버튼에서 손을 떼면 LED를 끄고 noTone()을 호출합니다

실행을 누르고 버튼을 눌러 연주한 다음 확인을 누르세요.

직접 해보기

// 색상별로 항목 하나씩: 빨강, 초록, 파랑, 노랑
const int ledPins[4] = {9, 10, 11, 12};
const int buttonPins[4] = {2, 3, 4, 5};
const int notes[4] = {262, 330, 392, 523};  // C, E, G와 높은 C
const int buzzerPin = 8;

int lastState[4] = {HIGH, HIGH, HIGH, HIGH};  // 각 버튼의 마지막 입력값

void setup() {
  // LED는 출력으로, 버튼은 INPUT_PULLUP으로 설정

}

void loop() {
  // 각 버튼에 대해: 버튼을 누르면 해당 LED를 켜고 해당 음을 재생한다;
  // 버튼을 놓으면 LED와 음을 끈다

}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

프로젝트의 모든 레슨

직접 연습해 보세요: Arduino 플레이그라운드