BricxCC를 이용한 마인드 스톰 구동 - PlayToneEx 를 사용한 음악 출력, 프로젝트 시작
- PlayToneEx를 사용한 음악 출력.
→ PlayToneEx(코드, 음의 유지시간, VOL, FALSE)
→ Wait(위의 코드 동작, 음의 유지시간보다 길게 설정한다면 그만큼 동작을 쉬게 된다.)
→ VOL은 0~4까지 사용 가능.
→ C=도, D=레, E=미, F=파, G=솔, A=라, B=시
→ 코드표
Sound |
3 4 5 6 7 8 9 |
B A# A G# G F# F E D# D C# C |
247 494 988 1976 3951 7902 233 466 932 1865 3729 7458 220 440 880 1760 3520 7040 14080 415 831 1661 3322 6644 13288 392 784 1568 3136 6272 12544 370 740 1480 2960 5920 11840 349 698 1397 2794 5588 11176 330 659 1319 2637 5274 10548 311 622 1245 2489 4978 9956 294 587 1175 2349 4699 9398 277 554 1109 2217 4435 8870 262 523 1047 2093 4186 8372 |
위의 코드표를 바탕으로 ‘학교종이 땡땡땡’ 사운드 출력 실습
#define VOL 4
task main() { PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(440,300,VOL,FALSE); Wait(350); PlayToneEx(440,300,VOL,FALSE); Wait(350); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(330,500,VOL,FALSE); Wait(700); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(330,300,VOL,FALSE); Wait(350); PlayToneEx(330,300,VOL,FALSE); Wait(350); PlayToneEx(294,500,VOL,FALSE); Wait(700); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(440,300,VOL,FALSE); Wait(350); PlayToneEx(440,300,VOL,FALSE); Wait(350); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(330,500,VOL,FALSE); Wait(700); PlayToneEx(392,300,VOL,FALSE); Wait(350); PlayToneEx(330,300,VOL,FALSE); Wait(350); PlayToneEx(294,300,VOL,FALSE); Wait(350); PlayToneEx(330,300,VOL,FALSE); Wait(350); PlayToneEx(262,500,VOL,FALSE); Wait(600); } |
task music
{
음악
}
task movement
{
모터
}
task main
{
precedes(nusic,movement); // 두가지 함수를 동시에 실행하게 해준다.
}
#define VOL 4 task music() { while (true) { PlayToneEx(392,300,VOL,FALSE); Wait(350); ... PlayToneEx(262,500,VOL,FALSE); Wait(600); } } task movement() { while(true) { OnFwd(OUT_AC, 75); Wait(1500); OnRev(OUT_AC, 75); Wait(1500); } } task main() { Precedes(music, movement); } |
프로젝트(자유과제 - 로봇제작 보고서)
- 의미 있는 행동을 하는 로봇을 제작하시오. (단, 랜덤하거나 의미없는 행동은 제외할 것)
- 센서를 하나 이상 사용할 것(복합사용 권장)
1. 목 표
- 제작하고자 하는 로봇
공장 자동화 설비 시스템 중 라인이동 시스템을 모토로한 Ball Roller Coaster.
2. 진행과정
1. 로봇 동작시 필요한 원리 또는 알고리즘
1) 정해진 라인으로 공이 굴러간다. 굴러가는 공은 경사를 따라 라인을 이동한다.
2) 경사를 따라 굴러간 공은 light 센서를 지나게 되며 light 센서는 지나간 공이 붉은색인지 푸른색인지를 판별한다.
3) 붉은색 공일 경우 ultrasonic 센서의 동작으로 설정한 거리까지 가까워 졌을 때(공이 모터와 연결된 선반에 올라갔을 때) 모터가 구동하게 된다. 구동된 모터는 끝에 달린 선반을 기울여 공을 다시 시작지점으로 보내게 된다.
4) 푸른색 공일 경우 ultrasonic 센서의 동작으로 설정한 거리로 왔을 때 모터가 구동한다. 이때 모터의 구동하는 각도와 속도를 더 빠르게 설정하여 공이 라인 밖으로 튕겨 나가도록 제어한다.
5) 결국 붉은색 공은 계속해서 라인을 따라 돌게되고, 푸른색 공은 걸러내어지는 동작을 무한히 실행한다.
'내장형 하드웨어 > MindStorm' 카테고리의 다른 글
구구단 출력하기 (0) | 2011.04.14 |
---|---|
BricxCC를 이용한 마인드 스톰 구동 3 (Light 센서를 이용한 로봇 동작) (0) | 2011.04.07 |
BricxCC를 이용한 마인드 스톰 구동 2 (SetSensorTouch) (0) | 2011.04.06 |
mindstorms Humanoids (로봇 시합을 위한 제작 과정) (0) | 2011.04.04 |
mindstorms 실습 - Humanoids (Alpha Rex) (0) | 2011.04.01 |