아두이노 우노 Q 포텐셔미터로 LED 밝기 제어
이 튜토리얼은 Arduino UNO Q로 포텐셔미터를 사용하여 LED의 밝기를 제어하는 방법을 보여줍니다. 포텐셔미터 노브를 돌리면 LED의 밝기가 실시간으로 변합니다.
※ 주의:
Arduino UNO Q ADC 차이: Arduino UNO Q의 STM32 MCU는 10비트(0–1023)가 아닌 12비트 ADC(값: 0–4095)를 가지고 있습니다. analogWrite()를 사용할 때 ADC 값을 0–4095에서 밝기 0–255로 매핑하세요.

필요한 하드웨어
| 1 | × | Arduino UNO Q | 아마존 | |
| 1 | × | USB Cable for Arduino Uno Q | 아마존 | |
| 1 | × | 포텐셔미터 | 쿠팡 | 아마존 | |
| 1 | × | 노브가 있는 포텐셔미터 모듈 | 쿠팡 | 아마존 | |
| 1 | × | LED | 쿠팡 | 아마존 | |
| 1 | × | LED Module | 아마존 | |
| 1 | × | 220 ohm Resistor | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 스크루 터미널 블록 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) Sensors/Servo Expansion Shield for Arduino Uno | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 브레드보드 쉴드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 케이스 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 | 아마존 |
배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
프로그래밍 방법
- 핀 A0에서 ADC 값 읽기 (Arduino UNO Q에서 12비트, 0–4095):
- ADC 값을 PWM 밝기로 매핑 (0–255):
- PWM을 사용하여 LED 핀에 밝기 쓰기:
MCU 코드 — 포텐셔미터로 LED 밝기 제어
Arduino UNO Q는 두 개의 프로세서를 가지고 있습니다: STM32 MCU(실시간 하드웨어 제어 담당)와 Qualcomm MPU(Debian Linux 실행). 이 섹션에서는 STM32 MCU만 프로그래밍됩니다 — Linux 측은 유휴 상태입니다. 나중 섹션에서는 두 프로세서가 함께 작동하는 방법을 보여줍니다.
빠른 단계
- Arduino UNO Q를 처음 사용하나요? 계속 진행하기 전에 아두이노 우노 Q 시작하기 튜토리얼을 따라 개발 환경을 준비하세요.
- 부품 배선: 포텐셔미터 출력을 A0에 연결하고, GND를 GND에, VCC를 3.3V에 연결하세요. 배선도에 따라 LED(220 Ω 저항 포함)를 핀 3에 연결하세요.
- 연결: Arduino UNO Q를 USB-C 케이블로 컴퓨터에 연결하세요.
- Arduino App Lab 열기: Arduino App Lab을 실행하고 Arduino UNO Q를 감지할 때까지 기다리세요.
- 새 App 만들기: Create New App 버튼을 클릭하세요.

- App에 이름을 지정합니다(예: DIYables_PotLED)
- Create를 클릭하여 확인합니다.
- 새 App 내에 폴더와 파일 세트가 생성됩니다.

- 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의 Run 버튼을 클릭하여 STM32로 컴파일 및 업로드하세요.

- 포텐셔미터 노브를 돌리세요 — LED 밝기가 실시간으로 부드럽게 변해야 합니다.
Linux + MCU 브릿지 프로그래밍
Arduino UNO Q는 함께 작동하는 두 개의 프로세서를 가지고 있습니다: MPU(Qualcomm, Debian Linux 실행)와 MCU(STM32, Zephyr OS 및 Arduino 스케치 실행). 이들은 Arduino_RouterBridge 라이브러리를 통해 RPC를 사용하여 통신합니다 — raw 시리얼 포트를 통해서는 절대 안 됩니다.
- 포텐셔미터 및 LED는 MCU(STM32)에 연결되어 있습니다 — 포텐셔미터 출력 와이어는 아날로그 핀 A0에, LED는 PWM 가능한 출력 핀에 연결됩니다. MCU는 loop()에서 지속적으로 ADC 값을 읽고 LED 밝기를 업데이트합니다.
- MPU는 포텐셔미터를 직접 읽거나 LED를 제어할 수 없습니다 — Bridge.call()을 통해 MCU에서 현재 밝기를 요청해야 합니다.
- MPU에는 Wi-Fi가 있습니다 — MPU가 Wi-Fi가 있는 전체 Debian Linux를 실행하기 때문에 요청 시 Telegram을 통해 밝기 수준을 보고할 수 있습니다.
- 통신: Linux 측의 Bridge.call()은 MCU 측의 Bridge.provide() 함수를 호출합니다
- ⚠️ 예약됨: /dev/ttyHS1(Linux) 및 Serial1(MCU)은 Arduino Router에서 사용됩니다 — 절대 직접 열지 마세요
간단히 말해: MPU가 밝기를 요청 → MCU가 ADC를 읽고 변환 → MCU가 ADC 및 밝기 값 보고 → MPU가 로깅 또는 전달.
MCU 스케치 — 포텐셔미터-LED 및 브릿지 및 모니터 출력:
Python 스크립트 (Arduino App Lab) — Linux에서 밝기 폴링:
- 주의: MCU 스케치에서 Bridge.begin()이 호출되고 스케치가 업로드된 후 Linux 측에서 Python 스크립트를 실행해야 합니다.
- ⚠️ 경고: 코드에서 /dev/ttyHS1(Linux)을 직접 열거나 Serial1(MCU)을 사용하지 마세요 — 이는 Arduino Router에서 예약되어 있으며 액세스하면 브릿지가 손상됩니다.
빠른 단계
- MCU 스케치 업로드: Arduino App Lab을 열고, 새 App을 만들고, 위의 브릿지 MCU 스케치를 sketch/sketch.ino에 붙여넣고, Arduino_RouterBridge 라이브러리를 설치하고, Run을 클릭하세요.
- Python 스크립트 추가: 위의 Python 코드를 동일한 App의 Python 탭에 붙여넣습니다.
- App 실행: Run을 클릭합니다 — Python 측에서 매초 밝기 수준을 폴링합니다.
- 포텐셔미터 노브를 돌리고 LED가 밝아지고 어두워지는 것을 확인하세요.
- 콘솔 확인: Console 탭 → MCU Monitor 서브탭을 열어 ADC 및 밝기 값이 기록된 것을 확인하세요.
App Lab 콘솔 출력
Telegram 통합
Telegram을 통해 어디서나 원격으로 현재 밝기 수준을 확인하세요.
Telegram 봇이 아직 없다면 계속 진행하기 전에 아두이노 우노 Q - 텔레그램 봇을 참조하여 봇 토큰을 얻으세요.
MCU 스케치: 이전 브릿지 섹션의 동일한 MCU 스케치를 유지 — 변경 사항 없음. STM32에서 이미 업로드되고 실행 중인지 확인하세요.
Python 스크립트 (Arduino App Lab) — 밝기 수준을 위한 Telegram 봇:
- 주의: YOUR_BOT_TOKEN을 Telegram의 @BotFather에서 얻은 토큰으로 바꾸세요.
- /brightness를 보내 현재 ADC 및 밝기 값을 확인하세요.
빠른 단계
- MCU 스케치 업로드: 이전 섹션의 브릿지 MCU 스케치를 사용합니다 (아직 없으면 먼저 업로드하세요).
- Telegram 스크립트 붙여넣기: 위의 Python 코드를 Arduino App Lab의 App의 Python 탭에 복사하여 붙여넣습니다.
- 토큰 설정: 스크립트에서 YOUR_BOT_TOKEN을 실제 봇 토큰으로 바꾸세요.
- App 실행: Run을 클릭합니다 — 봇이 Telegram 메시지를 수신 대기합니다.
- 테스트: 포텐셔미터를 돌리고, /brightness를 보냅니다 — 봇이 ADC 및 PWM 밝기 값으로 응답합니다.
App Lab 콘솔 출력
ArduinoBot
OpenClaw 통합
아두이노 우노 Q - OpenClaw 튜토리얼의 지침을 참조하여 이 튜토리얼에 OpenClaw를 적용할 수 있습니다
애플리케이션/프로젝트 아이디어
- 스마트 디머: 포텐셔미터를 조명의 물리적 밝기 제어로 사용합니다 — Telegram을 통해 수준 모니터링합니다
- 볼륨 노브 표시기: 포텐셔미터에서 매핑된 현재 "볼륨 수준"을 원격 모니터에 표시합니다
- 주변광 컨트롤러: 포텐셔미터 위치를 따뜻한 흰색 LED 스트립 밝기에 연결합니다
- 수동 오버라이드 패널: 포텐셔미터를 사용하여 자동화된 밝기 일정을 수동으로 재정의합니다
- 시각적 피드백 다이얼: 포텐셔미터를 LED 배열로 매핑하여 진행률 또는 수준을 표시합니다
자신을 도전하세요
- 쉬움: LED가 밝을 때 두 번째 LED가 희미해지도록 역으로 페이드하는 두 번째 LED를 추가합니다
- 중간: 브릿지 콜백을 통해 ADC 값과 백분율(0–100)을 모두 노출합니다
- 고급: 고정 간격으로 밝기 읽기를 기록하고 일일 요약을 전송하는 Telegram 봇을 구축합니다