PC와 아두이노를 전선 몇 가닥으로 잇고 숫자를 주고받았어요. 만들면서 배운 건 통신하는 법 자체보다, 안 보이는 걸 보이게 만드는 법이었어요.
보낸 값이 도착했는지 LED로 확인해요
컴퓨터끼리 대화할 땐 양쪽 로그를 다 볼 수 있어요. 그런데 아두이노 같은 작은 보드는 안이 안 보여요. 코드를 어디까지 실행했는지 들여다볼 디버거가 없거든요.
확인 채널을 하나 만들어요
숫자를 하나 보내서 제대로 받으면 그 횟수만큼 LED를 깜빡이게 했어요.
화면을 그리면서 값을 받으려고 손을 나눠요
다음 과제는 웹캠 화면을 띄운 채로 아두이노가 보내는 값을 계속 받는 거였어요. 그런데 이 둘을 한 흐름에서 하면 시리얼 값을 기다리는 동안 화면이 얼어붙어요. 값이 안 오면 코드가 그 줄에서 멈춰 서서 다음 프레임을 못 그리거든요.
그래서 시리얼을 받는 일을 백그라운드 스레드로 뺐어요. 스레드는 값이 올 때까지 기다려도 되는 별개의 손이라, 메인은 그동안 쉬지 않고 웹캠을 그려요.

latest)을 lock으로 안전하게 주고받고, 메인이 running으로 종료를 알려요.| 일 | 맡는 쪽 | 이유 |
|---|---|---|
| 시리얼 수신 | 백그라운드 스레드 | 값이 올 때까지 기다려도 됨 |
| 최신값 보관 | 공유 변수 + lock | 두 손이 동시에 만지면 깨짐 |
| 화면 그리기 | 반드시 메인 | 창을 띄우고 갱신하는 건 메인의 몫 |
이건 앞서 배운 생산자·소비자 구조랑 똑같았어요. 한쪽은 넣기만 하고 다른 쪽은 꺼내기만 하는 거예요.
두 과제 다 결국 채널을 하나 더 만드는 이야기였어요. 보내는 쪽이 안 보이니까 LED라는 확인 채널을 만들고, 보면서 듣기 힘드니까 스레드라는 별개의 손을 만들었어요. 다음 주엔 이 전선 대신 ROS라는 더 큰 통로로 로봇 여러 부분이 대화하게 된다는데, 안 보이는 걸 보이게 심어두는 습관은 그대로 가져갈 것 같아요.