brunch

19. 네 번째 장난감:나 따라 하기2- 빛과 소리

부저와 LED를 이용한 장난감 + 함수 만들기

by Cylogic

loop함수에 들어가기 이전에

아두이노가 시작을 하는 단계 또는 실패/성공 이후에 전체 LED를 켜고 음을 "도레미파솔라시도, 도시라솔파미레도"로 오가는 효과를 함수로 만들어 보자.


void off_led(){ // 모든 불을 끄는 함수

for (int i=0; i<4; i++) digitalWrite(led[i], LOW);

}


void on_led(){ // 모든 불을 켜는 함수

for (int i=0; i<4; i++) digitalWrite(led[i], HIGH);

}


void tone_up(){ // 도레미파솔라시도를 재생

for (int i=0; i < 8; i++) //note를 play

{

tone(sPin,note[i],500);

delay(100);

}

}


void tone_down(){ // 도시라솔파미레도를 재생

for (int i=7; i >= 0; i--) //note를 play

{

tone(sPin,note[i],500);

delay(100);

}

}


이 부분을 수행하기 위하여 이 전체를 부르는 함수를 정의해 보자


void reset_all(){ // 모든 변수를 실행 초기값으로 돌리는 함수

stage=0; // 시작 전임을 알림

for (int i=0; i<10; i++) num[i]=-1; // 순서에 아무런 데이터도 없음

on_led(); // LED를 켠다

tone_up(); // 도레미파솔라시도를 재생

delay(500);

off_led(); // LED를 끈다.

delay(300);

on_led(); // LED를 켠다

tone_down(); // 도시라솔파미레도를 재생

delay(500);

off_led(); // LED를 끈다.

delay(1000);

}


이 부분이 수행된 동영상은 다음과 같다.


아직 전체 부분이 합쳐지지 않은 것이니 그냥 저 부분이 수행되면 저런 효과가 난다는 것만 알면 된다.


만일 실패할 경우 나타내는 효과를 만들기 위하여 다음의 함수를 사용할 것이다.


void fail_sign(){

for (int i=0; i<5;i++){ // 5번에 걸쳐서 실행

digitalWrite(led[1], HIGH); // 1번 LED를 켠다.

tone(sPin,note[2],300); // '미'에 해당하는 음 재생

delay(200);

digitalWrite(led[1], LOW); // 1번 LED를 끄고

digitalWrite(led[2], HIGH); // 2번 LED를 켠다

tone(sPin,note[0],300); // '도'에 해당하는 음 재생

delay(200);

digitalWrite(led[2], LOW); // 2번 LED를 켠다.

}

}


이 부분의 영상은 다음과 같다.

내가 버튼을 잘 못 눌러서 노란색과 붉은색이 번갈아 켜지는 부분이 바로 위의 코드가 실행된 부분이다.

여기까지는 비교적 이해가 어렵지 않은 부분이었다.


다음 강좌에서 실제로 게임을 하기 위한 코드를 배우고 만들어 보자.

keyword
매거진의 이전글18. 네 번째 장난감:나 따라 하기1- 빛과 소리