본문 바로가기

아두이노 (Arduino)/통신 (Communication)

[Serial] 2. C# 아두이노 실시간 제어하기

이전 포스팅에서 아두이노의 내장 LED를 제어하는 간단한 통신 제어 프로그램을 만들었다.

이번에는 데스크탑에서 송신한 데이터를 아두이노가 수신받아 RGB LED를 실시간으로 제어할 수 있도록 해볼 것이다.

회로는 11번 ~ 9번까지 순서대로 R, G, B를 연결해준다.

윈도우 폼을 대충 이렇게 만들어보았다. TrackBar의 경우 0 ~ 200까지의 범위를 가지도록 세팅하였다.

그리고 타이머를 추가하여 상시 Enable이 될 수 있도록 상태를 조정한다. Interval 주기는 원하는 값으로 설정한다.

1000으로 지정하면 1초 주기로 데이터를 전달하도록 제작될 것이다. 기본 값 100 or 50ms가 적당하다고 판단된다.

타이머가 Interval 주기때마다 호출하는 함수를 위와 같이 작성한다. 시리얼 프로토콜의 헤더는 0xff이다.

그 외의 값은 0 ~ 200으로 제어하도록 하였다. 여기서 제어값을 0 ~ 255로 하지 않은 이유는 데이터 송수신시 0xff의 값이 255 값을 가지기 때문에 나름 규칙을 지정해주었다고 생각하면 된다. 원한다면 TrackBar의 범위를 0 ~ 250으로 설정하는 것이 좋겠다.

아두이노 코드는 정말 심플하다. 4개의 바이트 데이터 이상이 수신되면 헤더값 0xff의 값을 찾아 그 바이트 데이터를 기준으로 R, G, B의 값을 출력한다.

이렇게 연결해서 실시간으로 LED 상태를 제어할 수 있다.

 

C_Sharp_Serial2.zip
0.04MB