레슨 98-9: 아두이노를 사용한 LED 전압 레벨 미터 또는 포텐쇼미터를 이용한 워킹 라이트
이 프로젝트는 5개의 LED를 막대 그래프 디스플레이로 사용하는 전압 레벨 미터를 만드는 방법을 보여주며, 전적으로 아두이노와 단일 포텐셔미터로 구동됩니다. 손잡이를 돌리면 아두이노가 아날로그 핀에서 변화하는 전압을 읽고 1볼트당 하나의 LED를 켜므로, 일렬로 늘어선 불빛이 손잡이에 따라 말 그대로 "걸어" 올라갔다 내려갑니다. 이는 아날로그 입력을 이해하는 가장 명확한 방법 중 하나인데, 물리적인 라이트 바를 통해 아날로그-디지털 변환이 실시간으로 일어나는 것을 볼 수 있기 때문입니다.
여기서의 실용적 가치는 단순한 조명 쇼를 훨씬 뛰어넘습니다. 측정된 전압을 일련의 출력에 매핑하는 방법을 이해하고 나면, 똑같은 패턴을 실제 계측에 재사용할 수 있습니다. 예를 들어 다음과 같은 것을 만들 수 있습니다:
- 12V 또는 USB 보조 배터리의 남은 용량을 LED 줄로 표시하는 배터리 충전 표시기.
- 부표 센서가 수심에 비례하는 전압을 출력하는 물탱크 수위 게이지.
- LM35와 같은 아날로그 온도 센서를 사용한 온도 막대 디스플레이.
- 라디오 수신기나 증폭기를 위한 신호 강도 또는 오디오 레벨 미터.
- 모든 0–5V 아날로그 변환기(압력, 빛, 위치)를 위한 간단한 센서 판독기.
- 멀티미터 화면 없이 전원 레일을 확인하기 위한 벤치 테스트 전압 프로브.
임계값이 보드 전압의 백분율로 계산되기 때문에, 동일한 코드가 Uno와 Mega 같은 5V 보드와 3.3V 보드에서 한 줄만 바꾸면 작동합니다.
하드웨어 및 부품
부품 목록은 의도적으로 최소한이며, 모든 것이 영상 초반부에 설명되어 있습니다 (영상 01:54). 필요한 것은:
- 아두이노 보드 하나 (Uno, Nano, 또는 Mega).
- LED 5개, 막대가 명확하게 읽히도록 ideally 단일 색상이 좋지만 혼합 색상도 잘 작동합니다.
- 전류 제한 저항 5개. 튜토리얼에서는 1kΩ 저항을 사용하지만, 대략 300Ω에서 1kΩ 사이의 어떤 것이든 작동합니다; 값이 높을수록 LED가 더 어두워질 뿐입니다 (영상 05:33).
- 포텐셔미터 하나. 회전 손잡이형과 슬라이드형 모두 시연됩니다 (영상 02:19).
- 브레드보드와 점퍼 와이어.
배선에 중요하므로 LED 자체에 대한 간단한 설명: LED는 다이오드이므로 한 방향으로만 전도됩니다. 플라스틱 몸체의 평평한 면과 짧은 다리가 음극(negative)입니다. 긴 다리가 양극(positive)입니다. 튜토리얼에서 이 기호와 물리적 형태를 자세히 설명합니다 (영상 02:39).
저항 값은 임의가 아닙니다. LED는 약 2V를 떨어뜨리고, 작은 3mm 및 5mm 타입은 약 10mA를 소비합니다. 5V 공급에서 나머지 3V가 저항 양단에 걸려야 하므로, 옴의 법칙에 따라 R = 3V / 0.01A = 300Ω입니다. 이것이 최대 밝기를 위한 값이며; 1kΩ를 사용하는 것은 안전하고 약간 어두운 선택입니다 (영상 04:41).
배선 가이드
배선의 LED 부분은 이전 walking-light 프로젝트와 동일합니다: 각 LED 양극은 자체 디지털 핀에 연결되고, 각 음극은 저항을 통해 공통 접지 레일로 갑니다. 튜토리얼에서 LED는 핀 7, 6, 5, 4, 3에 연결됩니다 (영상 43:04).
포텐셔미터가 유일한 새로운 부품입니다. 두 개의 바깥쪽 핀은 두 전원 레일로 갑니다 — 한 바깥쪽 핀은 접지로, 다른 하나는 5V로 (또는 3.3V 시스템을 측정하는 경우 3.3V로). 와이퍼라고 불리는 가운데 핀이 출력이며 아날로그 핀 A0에 연결해야 합니다 (영상 43:30). 와이퍼가 가변 전압을 생성하는 것입니다: 손잡이를 돌리면 와이퍼가 저항 트랙을 따라 미끄러지고, 와이퍼가 제공하는 전압이 두 레일 사이에서 부드럽게 변합니다.
중요한 세부 사항 하나: 회로가 작동 중일 때 포텐셔미터를 제거하면 아날로그 핀이 플로팅 상태로 남아 LED가 무작위로 깜빡입니다. 이 동작은 영상에서 시연되며 (영상 48:52), 아날로그 입력에는 항상 정의된 전압 소스가 필요하다는 것을 잘 상기시켜 줍니다.
코드 설명
코드는 짧고 대부분 간단하므로, 이 섹션은 여러분이 변경하고 싶을 부분에만 초점을 맞춥니다. 이 설정들은 모두 스케치 상단에 있습니다.
핀 정의. 이것들은 LED와 포텐셔미터가 연결된 핀을 아두이노에 알려줍니다. LED를 다르게 배선했다면 이 숫자를 일치하도록 변경하세요 — 순서가 중요합니다, 왜냐하면 LED1이 가장 낮은 임계값이고 LED5가 가장 높기 때문입니다.
const int potPin = A0;//define a pin to connect potentiometer
const int LED1 = 7;
const int LED2 = 6;
const int LED3 = 5;
const int LED4 = 4;
const int LED5 = 3;보드 전압. 이것은 올바르게 설정해야 할 가장 중요한 값입니다. 모든 임계값이 계산되는 기준입니다. Uno나 Mega의 경우 5.0으로, 3.3V Nano나 유사한 보드의 경우 3.3으로 설정하세요. 잘못 설정하면 모든 LED가 잘못된 전압에서 켜집니다 (영상 44:19).
float boardVoltage= 5.0;//for UNO and MEGA 5.0V for Nano either 5V or 3.3V
시리얼 전압 표시. 이것을 true로 설정하면 측정된 전압이 9600 보드레이트로 시리얼 모니터에 출력되어 캘리브레이션 중에 매우 유용합니다. 모든 것이 작동하면 false로 설정하여 출력을 끄세요.
boolean showVoltage = true;//true or false to read voltage in serial monitor
변환 작동 방식. 아두이노의 아날로그-디지털 변환기는 10비트 변환기(210 = 1024 단계)이므로 0에서 1023 사이의 숫자를 반환합니다. 코드는 보드 전압을 기준으로 해당 원시 숫자를 실제 전압으로 스케일링합니다. Due와 같은 12비트 보드로 이동할 경우 4095로 나누어야 한다는 것을 기억해야 할 코드 라인입니다.
int sensorValue = analogRead(A0);
float voltage = sensorValue * (boardVoltage / 1023.0);
임계값 로직. 전압을 하드코딩하는 대신, 각 단계는 보드 전압의 백분율로 표현됩니다. 95% 이상이면 5개의 LED가 모두 켜지고, 80% 초과이면 4개만 켜지며, 이런 식으로 20%까지 내려가면 LED 하나만 켜집니다. 이 백분율 접근 방식이 비교문을 다시 작성하지 않고도 5V와 3.3V 보드 간에 스케치를 이식 가능하게 만드는 이유입니다.
if (voltage >= boardVoltage*0.95)
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, HIGH);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
}
코드가 else if를 사용하기 때문에 루프를 한 번 통과할 때마다 정확히 하나의 분기만 실행되므로, 한 번에 올바른 수의 LED만 켜집니다. 각 루프 끝의 50ms 지연은 디스플레이가 깜빡이는 것을 방지합니다.
실시간 프로젝트 및 데모
스케치를 업로드한 후 9600 보드레이트로 시리얼 모니터를 열고 노브를 천천히 돌리세요. 출력된 전압과 LED 바가 서로 밀접하게 추적합니다: 약 1V에서 LED 하나가 켜지고, 2V에서 두 개가 켜지며, 약 4.8V까지 이런 식으로 진행되어 다섯 개가 모두 켜집니다 (영상 47:37). 판독값은 예상 값의 몇 백분의 1볼트 이내로 들어오는데, 이는 10비트 변환기로서는 훌륭한 결과입니다.
단계가 약간 불균등해 보인다면, 보통 코드보다는 저항 때문입니다. 튜토리얼에서는 표준 탄소 필름 저항은 10% 허용 오차를 가지는 반면, 파란 금속 필름 타입은 일반적으로 1%로 눈에 띄게 더 균일하고 정확한 단계를 제공한다고 설명합니다 (영상 48:18).
또한 회전식 전위차계를 슬라이드 전위차계로 교체하면 선형적인 느낌으로 동일한 동작을 얻을 수 있으며, 미터를 패널에 장착할 계획이라면 좋은 옵션입니다 (영상 49:07).
노브 대신 수동으로 불빛을 이동하고 싶다면, Lesson 98-8: Walking Light with Push Button and LEDs with Arduino에서 다룹니다. 그리고 단순히 LED가 자체 타이머로 이동하게 하고 싶다면, Lesson 98-7: Walking Light Using Arduino and 5 LEDs를 참조하세요.
이 영상의 관련 프로젝트
- Lesson 98-1: How to Turn On and Off an LED with Arduino
- Lesson 98-2: How to Turn On and Off an LED Using a Push Button with Arduino
- Lesson 98-3: How to Turn On/Off a Toggle LED Using a Push Button with Arduino
- Lesson 98-4: Fading an LED Light Using Arduino: Brightness Control
- Lesson 98-5: Fade Light When a Button Is Pressed Using Arduino
- Lesson 98-6: Seesaw LED Game with Arduino
- Lesson 98-7: Walking Light Using Arduino and 5 LEDs
- Lesson 98-8: Walking Light with Push Button and LEDs with Arduino
- Lesson 98-10: Arduino Traffic Light
챕터
- [00:00] 10가지 LED 프로젝트 개요
- [02:29] LED 기초, 기호 및 저항 계산
- [42:25] LED 전압 레벨 미터 소개
- [43:04] LED와 전위차계 배선
- [43:54] 전압 바 코드 설명
- [44:19] 보드 전압 기준 설정
- [46:00] 임계값 로직 및 백분율 단계
- [47:14] 데모: LED 바로 전압 읽기
- [48:18] 저항 허용 오차와 정확도
- [49:07] 슬라이드 전위차계 사용
This code has not been parsed yet. Please return to the admin panel to parse it.
필요할 수 있는 것들
-
아마존SunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
아마존
-
아마존
자원 및 참고자료
-
문서화Documentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
파일📁
아두이노 라이브러리 (zip)
-
SunFounder 3-in-1 스마트 카 학습 키트 소스 코드
3in1-kit-main-v2.zip12.80 MB
사용자 매뉴얼
-
SunFounder 3-in-1 Arduino 스마트 카 조립 설명서이 문서는 SunFounder 3-in-1 Arduino 스마트 카의 단계별 조립을 보여줍니다.
SunFounder_car_assembly_manual.pdf1.20 MB