2011년4월12일..마인드스톰 소리발생, 자유과제(초음파레이더를 장착한 원격제어감시 지능형 자동차)

 

1.NXC_tutorial.pdf p.29 소리발생 예제

image

PlayToneEx()는 단일 구형파 톤을 발생하는 함수이다. 프로토타입은 아래와 같이,

image

char형을 반환하고 부호없는 정수형 16비트(unsigned int)의 주파수를 받고, 지속시간도 받는다. 볼륨은 byte타입으로 8비트 크기를 갖고 loop(반복)은 1비트 참과 거짓(1과 0)만 받는다. [inline]은 뭔지 모르겠다.

지속시간은 1ms단위이고 주파수는 Hz단위로 한계가 어디 까지인지는 나와있지 않다.
볼륨은 0이 조용하고 4가 큰 소리다. loop값이 1이면 반복한다. (필요없어 시험해 보진 않았다.)

화음구현이 가능한가 궁금해서 구글검색을 해보니 화음을 출력하는 함수가 있었다. 그러나 헤더파일은 공개하지 않았다.
멀티테스킹하면 화음이 되지 않을까?

현대 음악의 악보에 있는 12음계의 표는 아래와 같이,

image

4옥타브 ’라’(A)음을 기준으로 440Hz가 3옥타브로 내려가면 1/2이 되고 5옥타브로 올라가면 2배가 된다.
각 자리의 주파수는 옥타브가 높아지면 2배 낮아지면 1/2배가 된다.
일일이 치기 힘드니 #define으로 정의해서 쓰자.

 

 

 

2.NXC_tutorial.pdf p.30 소리발생과 모터제어 예제

image

task music()은 음악연주하는 테스크로 4옥타브 도레미레를 400ms간 연주하고 100ms동안 쉬는 일을 계속 반복한다.
task movement()는 전진 3초와 후진 3초를 계속 반복한다.
task main()은 시작함수로 내부에 precedes()라는 새로운 함수가 있다. 이 precedes()는 task명을 전달인자로 받아 그 task들을 동시에 실행되게 해주는 함수로 NXC언어에서는 다중 태스크를 정의하여 사용할 수 있고, 멀리쓰레딩기법을 사용하여 여러 개의 태스크를 동시에 실행할 수 있다. NXC언어에서 쓰레드는 하나의 태스크를 의미한다.

 

 

3.도레미..레미파..미파솔솔..

image 

sweepUp이라는 배열을 사용해도 연주할 수 있어 편하다.

 

4.자유과제 – 초음파레이더를 장착한 원격제어와 수집이 가능한 자동차

나는 프린터를 만들고 싶은데 진우가 자동차를 만들자고 했다.
그래서 nxtprograms.com에서 자동차를 찾아보았다. 찾았다!

 

image

조금 허름하지만 내가 원하던 자동차다!
많이 개조하면 쓸만하겠는걸…

●제작과정

DSCN2165 DSCN2166 DSCN2167 DSCN2168 DSCN2169 DSCN2170 DSCN2171 DSCN2172 DSCN2173 DSCN2174 DSCN2175 DSCN2176 DSCN2177 DSCN2178 DSCN2182 DSCN2184 DSCN2185 DSCN2186

험난한 제작과정을 거쳐 완성되었다. 조금 추가하거나 수정해야 할 부분이 있으면 다음 기회에…오늘은 피곤하다.

 

image

간단한 프로그램을 짜서 모터만 시험해 봤다. (전에 초음파센서 회전하는 소스는 어디 갔는지 안 보인다.(땀)