아두이노 우노 Q LED 깜박임
LED를 제어하는 것은 모든 Arduino 보드의 고전적인 첫 번째 단계입니다 — Arduino UNO Q도 예외가 아닙니다. 이 튜토리얼에서는 Arduino UNO Q에서 LED를 켜고 끄고 깜박이게 하는 프로그램을 작성하는 방법을 배웁니다.
이 튜토리얼에서 배울 내용:
- LED란 무엇이며 어떻게 작동하는지
- LED를 Arduino UNO Q에 배선하는 방법
- Arduino UNO Q에서 MCU(C/C++ Arduino 코드)를 프로그래밍하여 LED를 깜박이게 하는 방법
- Linux 측(Python)과 MCU 측(C/C++ Arduino 코드)을 모두 프로그래밍하여 Linux 측에서 LED를 제어하는 방법
- Arduino UNO Q에서 Telegram을 사용하여 원격으로 LED를 켜거나 끄는 방법
- Arduino UNO Q에서 OpenClaw를 사용하여 LED를 제어하는 방법

필수 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | Arduino Uno Q용 USB 케이블 | 아마존 | |
| 1 | × | LED | 쿠팡 | 아마존 | |
| 1 | × | LED Module | 아마존 | |
| 1 | × | 220 옴 저항 | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점프 와이어 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
LED 정보
LED(발광 다이오드)는 전류가 올바른 방향으로 흐를 때 켜지는 작은 불빛입니다.
- 두 핀: 애노드(+)와 캐소드(−)
- 방향이 중요합니다: LED가 켜지려면 전류가 애노드(+)에서 캐소드(−)로 흘러야 합니다.
- 저항 필요: 대부분의 LED는 손상을 방지하기 위해 전류 제한 저항(일반적으로 220Ω)이 필요합니다.
- 제어: 애노드(+)를 Arduino 디지털 출력 핀에 연결하십시오 — HIGH로 설정하면 켜고 LOW로 설정하면 끕니다.

※ 주의:
대부분의 LED는 저항이 필요합니다. 저항을 양극(애노드)과 전원 공급 장치 또는 음극(캐소드)과 GND에 연결할 수 있습니다. 일부 LED는 내장 저항이 있어 추가 저항이 필요하지 않습니다.
핀아웃
LED는 두 개의 핀을 가지고 있습니다:
- 캐소드(−) 핀: GND(0V)에 연결
- 애노드(+) 핀: LED의 상태를 제어합니다 — HIGH로 설정하면 켜고 LOW로 설정하면 끕니다.

LED 프로그래밍 방법
Arduino UNO Q에서 핀을 디지털 출력으로 설정하면 전압을 프로그래밍할 수 있습니다 — GND 또는 VCC — LED를 켜거나 끕니다.
- 핀 모드를 출력으로 설정:
- LED를 끕니다(핀을 LOW로 설정):
- LED를 킵니다(핀을 HIGH로 설정):
배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
※ 주의:
Arduino UNO Q의 어떤 핀을 디지털 출력으로 사용하여 LED를 제어할 수 있습니까? 핀 0~13과 A0~A5을 모두 디지털 출력 핀으로 사용할 수 있습니다.
MCU 코드(직접 Arduino 스케치)
Arduino UNO Q는 두 개의 프로세서를 가지고 있습니다: STM32 MCU(실시간 하드웨어 제어 처리) 및 Qualcomm MPU(Debian Linux 실행). 이 섹션에서는 STM32 MCU만 프로그래밍되며 — Linux 측은 유휴 상태로 유지됩니다. 나중 섹션에서는 두 프로세서가 함께 작동하는 방법을 보여줄 것입니다.
다음은 STM32 MCU의 핀 9에 연결된 LED를 깜박이게 하는 Arduino 스케치입니다:
- 핀 9을 디지털 출력으로 설정
- LED를 500ms 동안 켜고, 500ms 동안 끕니다 — 반복해서 계속됩니다.
빠른 단계
- Arduino UNO Q를 처음 사용하시나요? 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따라 개발 환경을 준비하세요.
- LED 배선: 위의 배선도에 따라 LED와 220Ω 저항을 Arduino UNO Q 핀 9에 연결하세요.
- 연결: USB-C 케이블을 사용하여 Arduino UNO Q를 컴퓨터에 연결하세요.
- Arduino App Lab 열기: Arduino App Lab을 시작하고 Arduino UNO Q를 감지할 때까지 기다리세요 — 첫 실행 시 몇 분이 소요될 수 있습니다.
- 새 앱 만들기: 새 앱 만들기 버튼을 클릭하세요.

- 앱에 이름을 지정하세요. 예: DIYables_BlinkLED
- 만들기를 클릭하여 확인하세요.
- 새 앱 내에서 폴더와 파일 세트가 생성된 것을 볼 수 있습니다.

- sketch/sketch.ino 파일을 찾으세요 — 이는 MCU 스케치를 붙여넣을 곳입니다.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- 업로드: Arduino App Lab에서 실행 버튼을 클릭하여 STM32로 컴파일 및 업로드하세요.

- LED 확인: 핀 9에 연결된 LED가 500ms마다 켜고 꺼지고를 반복해야 합니다.
- 팁: 두 delay(500) 값을 모두 조정하여 깜박임 속도를 변경하세요 — 빠른 깜박임은 delay(100)을 시도하거나 느린 깜박임은 delay(2000)을 시도하세요.
※ 주의:
- 위의 코드는 delay() 함수를 사용하며, 이는 대기 중에 MCU가 다른 작업을 수행하지 못하게 합니다. 프로젝트에서 동시에 여러 작업을 수행해야 하는 경우 아두이노 우노 Q - LED - 지연 없이 깜박이기를 참조하세요.
Linux + MCU 브릿지 프로그래밍
Arduino UNO Q는 두 개의 프로세서를 가지고 있으며 함께 작동합니다: MPU(Qualcomm, Debian Linux 실행) 및 MCU(STM32, Arduino 스케치와 함께 Zephyr OS 실행). 이들은 Arduino_RouterBridge 라이브러리를 통해 RPC를 사용하여 통신합니다 — 원본 직렬 포트를 통해서는 안 됩니다.
- LED는 MCU(STM32)에 연결됩니다 — LED는 MPU가 아닌 STM32의 디지털 핀에 배선되어 있습니다. MCU는 digitalWrite()를 통해 LED 상태를 직접 제어합니다.
- MPU는 LED를 직접 제어할 수 없습니다 — Bridge.call()를 통해 MCU에 요청을 보내야 합니다. MCU는 해당 Bridge.provide_safe() 함수를 실행하고 LED 상태를 설정합니다.
- MPU는 Wi-Fi를 가지고 있습니다 — MPU는 Wi-Fi가 있는 전체 Debian Linux를 실행하므로 인터넷에 연결하고 MCU가 할 수 없는 작업을 수행할 수 있습니다: Telegram 명령 수신, REST API 호출 등.
- 통신: Linux 측의 Bridge.call()은 MCU 측의 Bridge.provide_safe() 함수를 호출합니다.
- ⚠️ 예약됨: /dev/ttyHS1(Linux) 및 Serial1(MCU)은 Arduino 라우터에서 사용됩니다 — 절대 직접 열지 마세요.
간단히 말해: MPU가 명령을 받음(예: Telegram에서) → MPU가 MCU로 전송 → MCU가 LED 상태를 설정합니다.
MCU 스케치 — LED 제어를 Linux 측에 노출:
Python 스크립트(Arduino App Lab) — Linux에서 LED 제어:
- 참고: Bridge.begin()이 MCU 스케치에서 호출되었는지 확인하고 Linux 측에서 Python 스크립트를 실행하기 전에 스케치가 업로드되었는지 확인하세요.
- ⚠️ 경고: /dev/ttyHS1(Linux에서) 또는 Serial1(MCU에서)을 직접 열지 마세요 — 이들은 Arduino 라우터에서 사용되며 접근하면 브릿지가 끊어집니다.
빠른 단계
- MCU 스케치 업로드: Arduino App Lab을 열고 새 앱을 만들고 위의 Bridge MCU 스케치를 sketch/sketch.ino에 붙여넣고 실행을 클릭하세요.
- Python 스크립트 추가: 위의 Python 코드를 동일한 앱의 Python 탭에 붙여넣으세요.
- 앱 실행: 실행을 클릭하세요 — Linux 측이 500ms마다 브릿지 호출을 통해 LED를 깜박이기 시작할 것입니다.
- 콘솔 확인: 콘솔 탭을 엽니다 → Python 콘솔 하위 탭에서 Python 측의 ON/OFF 메시지를 확인하세요.
- 팁: time.sleep(0.5)을 원하는 값으로 변경하여 Linux 측이 LED를 깜박이는 속도를 제어할 수 있습니다.
App Lab 콘솔 출력
Telegram 통합
Telegram을 통해 원격으로 LED를 켜거나 끌 수 있습니다 — 어디서나 명령을 보내면 LED가 즉시 응답합니다.
아직 Telegram 봇이 없으면 계속하기 전에 아두이노 우노 Q - 텔레그램 봇을 참조하여 봇 토큰을 얻으세요.
이 섹션에서 다룹니다:
- Arduino UNO Q의 Linux 측에서 Python 스크립트를 실행하여 Telegram 메시지 수신
- Bridge.call()을 통해 MCU 측으로 LED 명령 전달
- Telegram으로 확인 회신 보내기
MCU 스케치: 이전 브릿지 섹션의 동일한 MCU 스케치를 유지하세요 — 변경 사항 없음. 계속하기 전에 STM32에서 이미 업로드되고 실행 중인지 확인하세요.
Python 스크립트(Arduino App Lab) — LED 제어용 Telegram 봇:
- 참고: YOUR_BOT_TOKEN을 Telegram의 @BotFather에서 얻은 토큰으로 바꾸세요.
- 봇에 /on을 보내 LED를 켜세요.
- 봇에 /off를 보내 LED를 끄세요.
빠른 단계
- MCU 스케치 업로드: 이전 섹션의 Bridge MCU 스케치를 사용하세요(아직 완료하지 않았으면 먼저 업로드하세요).
- Telegram 스크립트 붙여넣기: 위의 Python 코드를 Arduino App Lab의 앱의 Python 탭에 복사하여 붙여넣으세요.
- 토큰 설정: 스크립트의 YOUR_BOT_TOKEN을 실제 봇 토큰으로 바꾸세요.
- 앱 실행: 실행을 클릭하세요 — 봇이 즉시 Telegram 메시지를 수신 대기합니다.
- 테스트: 봇에 /on을 보내면 LED가 켜지는 것을 확인하세요. /off를 보내면 LED가 꺼집니다.
- 팁: Python 스크립트에 /status 명령을 추가하여 LED가 현재 켜져 있는지 꺼져 있는지 보고하도록 하세요.
App Lab 콘솔 출력
ArduinoBot
OpenClaw 통합
이 튜토리얼에 OpenClaw를 적용할 수 있습니다 아두이노 우노 Q - OpenClaw 튜토리얼의 지침을 참조하세요.
응용 프로그램/프로젝트 아이디어
다음은 LED 및 Arduino UNO Q로 빌드할 수 있는 프로젝트 아이디어입니다:
- Telegram으로 제어하는 야간 조명: Telegram을 통해 전화기에서 침실 LED를 켜거나 끄세요.
- 상태 표시기: LED를 사용하여 Linux 측의 프로세스가 완료되었는지 여부를 표시하세요.
- 심박수 모니터: Python 측에서 LED를 깜박여 앱이 실행 중이고 건강함을 나타내세요.
- 카운트다운 타이머: 카운트다운이 0에 도달할 때까지 LED를 증가하는 속도로 깜박이세요.
- 알림 표시: Linux 측에서 새 이메일 또는 API 이벤트가 감지되면 LED를 깜박이세요.
도전 과제
Arduino UNO Q와 LED로 기술을 향상시키기 위해 다음 도전 과제를 시도하세요:
- 쉬움: 깜박임 스케치를 수정하여 3번 빠르게 깜박이고 1초 일시 중지한 후 반복하세요.
- 중간: 두 번째 LED를 브릿지 스케치에 추가하고 그들 사이를 전환하는 Telegram 명령을 만드세요.
- 어려움: Telegram 봇을 만들어 깜박임 패턴을 받아들이게 하세요(예: /blink 3 500) 그리고 LED를 그 많은 횟수로 주어진 지연으로 깜박이게 하세요.