사이먼: 버튼과 음표
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 배열은 각 버튼의 마지막 읽기 값을 저장합니다. 이후 단계에서는 버튼에서 손을 뗄 때 누름으로 셉니다. 이 버튼은 바운스가 없으므로 에지 확인만으로 충분합니다.
챌린지
중급네 가지 색상이 연주되도록 하세요:
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와 음을 끈다
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
프로젝트의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드