아두이노 다채널 미디 플레이어 제작 #1 - I2C 통신 테스트
프로젝트/다채널 미디 플레이어

아두이노 다채널 미디 플레이어 제작 #1 - I2C 통신 테스트

반응형

2018/02/16 - [아두이노/프로젝트] - 아두이노 3채널 미디 오케스트라

위 글에서 USB 미디장치로 인식할 수 있는 아두이노 레오나르도 보드 3개를 이용하여 3채널 미디 오케스트라를 제작한 적이 있었다. 매우 성공적으로 작동했지만 위 글에서도 언급했듯 각각의 보드들이 USB 포트로 연결되어 있어야 했기에 USB 허브가 없는 한 8채널과 같은 다채널 미디 플레이어는 구현하기 어렵다.

이 문제를 어떻게 해결할까 고민하던 중 아두이노간에 유선으로 1:N 통신이 가능하다는 이야기를 들었다. 그렇다면 하나의 보드는 미디통신을 하고 나머지 보드들은 각각의 채널을 담당하여 수신받은 데이터를 토대로 음계를 출력하면 될 것이다.



회로는 간단하게 1개의 Master인 아두이노 프로 마이크로와 2개의 Slave인 아두이노 레오나르도로 이루어져 있으며, I2C 통신을 위해 SDL과 SDA핀이 공유되어있는 상태이다. 스피커가 있으나 귀찮은 관계로 출력은 LED로 대체했다.



키보드로 미디신호를 입력받아 Slave에 전송하면 LED가 점멸한다. I2C를 통해 노트, 채널, 속도 등의 데이터를 전달한다. 자세한 구조는 추후에 공개할 예정.



2채널짜리 미디파일을 실행시켜본 모습이다 각 Slave가 각각의 채널에 맞추어 LED를 점멸한다. 이정도면 성공적이다.


그런데 스피커로 테스트할때 전보다 음질이 좀 깨진다. 위와같은 구조를 구성하면서 멜로디를 제생하는 함수가 기존의 함수안에 삽입되었는데 이것이 영향을 주는 것 같다. (함수안에 함수가 들어가는 구조는 프로그래밍상 별로 좋진않다.)


반응형
    # 테스트용