내장형 하드웨어/MindStorm

BricxCC를 이용한 마인드 스톰 구동 - PlayToneEx 를 사용한 음악 출력, 프로젝트 시작

동화다아아 2011. 4. 12. 16:42
 

- 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) 결국 붉은색 공은 계속해서 라인을 따라 돌게되고,  푸른색 공은 걸러내어지는 동작을 무한히 실행한다.