이전 포스팅에서 아두이노의 내장 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 상태를 제어할 수 있다.
'아두이노 (Arduino) > 통신 (Communication)' 카테고리의 다른 글
[Serial] 3. C# 아두이노 센서값 실시간 동기화하기 (3) | 2021.11.09 |
---|---|
[Serial] 1. C# 아두이노와 시리얼 통신하기 (0) | 2021.11.07 |
[Serial] 2. C++ 아두이노와 프로토콜 통신하기 (2) | 2021.07.31 |
[Serial] 1. C++ 아두이노와 시리얼 통신하기 (0) | 2021.07.29 |